WordPress.org

Make WordPress Core

Changes between Initial Version and Version 1 of Ticket #15148, comment 9


Ignore:
Timestamp:
02/10/2015 07:40:30 AM (6 years ago)
Author:
archon810
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #15148, comment 9

    initial v1  
    993. A sneaky bug in one of our plugins results in a single cron entry being scheduled by probably 10% of the requests. Usually, the only side effect would be that this cron entry would stick around in the cron job list because it gets reinserted over and over.
    10104. These db performance issues result in both slow writes and reads, which in turn means that due to a race condition, wp-cron gets read and written over and over, overwriting anything the jobs that are in progress and potentially even already complete and putting them back in. It's easy to see how that turns into a nightmare. But it gets worse. Btw, I have to mention that due to cron performance issues in the past, I've long switched off the built-in wp cron and enabled a Linux cron-initiated wp-cron.
    11 5. The heightened load and constant cron overwriting grows the cron job list to about 450 jobs, at least that was the state I found it in. At this point, just the cron array is 1.8MB, and the servers are burning way up.
     115. The heightened load and constant cron overwriting grows the cron job list to about 450 jobs that have no chance to get flushed, at least that was the state I found it in. At this point, just the cron array is 1.8MB, and the servers are burning way up.
    12126. Did I mention how things manage to get more fun? The db server is actually a master in a master-slave configuration, and it's starting to spit out binlogs like it's nobody's business. I'm talking a gig per minute at its worst. Network is burning up too, but... then the master runs out of space after eating through 100GB of space in a matter of 2-3 hours.
    13137. Oh, and additionally, the huge increases in cron array size (i.e. the call to get_options()) ends up in tons of OOM errors in the database, at which point Wordpress does wonderful things like considering the query result as returning empty. At that point, the site may switch to the "Hiii, it's my first install, here's an install page where you can create an admin user" message, various plugin settings get reset, and other fun stuff. It's really really fun. I can't recommend enough trying this once, but don't forget to take some speed first.