On Sunday, May 31st, at 10pm PST, Ashby was slow and had a high error rate for approximately 1 hour, from 10pm to 11:10pm (PST).
During this time, the Ashby main application would have been slow, and approximately 50% of user actions would have resulted in Ashby displaying an error. Some candidates may have noticed a slower response to their job applications, but all applications were successful and none were lost.
On Sunday, May 31st, at 4pm PST, an account with one of our AI providers became unavailable. As a result, calls to that provider started to error. These calls are configured to automatically retry periodically until they succeed, but the retries caused a steady increase in the number of such calls per minute. In turn, this drained the capacity of a shared subsystem that manages many different processes at Ashby.
In particular, that shared subsystem is used for storing user session data. As the shared subsystem became overwhelmed, user sessions became slower to respond.
This caused requests to our web servers to take significantly longer to process. Which then caused our web servers to begin running out of capacity.
At 6am, capacity reached a critical low. At this point, our system began rejecting user actions. This is done to prevent complete system failure.
At 10:04pm PST, our on-call engineers were notified. By 10:16pm PST, our on-call engineers were beginning an investigation.
At 11:03pm PST, we identified the subsystem that had reached capacity.
At 11:07pm PST, we stopped processing certain types of automated actions.
At 11:09pm PST, we identified the issue with the external provider and rectified it immediately.
At 11:10pm PST, error rates were down to 10%.
At 11:20pm PST, error rates were down to normal levels (~0%).
At 11:54pm PST, normal service was resumed, and no data was lost.
We’ve done an internal postmortem on this incident and have implemented or plan to implement a variety of changes that achieve three things:
Specifically, we have done the following: