Page MenuHomePhabricator

Phabricator got overloaded when browsing directories with large number of files in diffusion
Closed, ResolvedPublic

Description

For each file there will be a conduit call so the site is flooded when the directory has lots of files. The conduit calls (diffusion.lastmodifiedquery) are fairly slow which makes the situation even worse.
I think it's ok to freeze the page, but we should limit the async calls which are making the whole site busy.

Event Timeline

sowedance assigned this task to epriestley.
sowedance raised the priority of this task from to Needs Triage.
sowedance updated the task description. (Show Details)
sowedance changed the visibility from "Public (No Login Required)" to "All Users".
sowedance added a subscriber: sowedance.
chad added a project: Diffusion.
chad changed the visibility from "All Users" to "Public (No Login Required)".
chad added a subscriber: epriestley.
epriestley added a subscriber: Unknown Object (MLST).Feb 1 2014, 4:42 PM

Some general related things here:

  • D5254 and followups batch these requests, but the state at the end of that line of patches was slightly worse for Facebook's large repositories.
  • T2683 discusses this task more generally -- essentially, all slow operations in Diffusion are currently slow because <vcs> log <path> is slow. Building a cache for that command would improve the performance of many of the slow operations. However, this is hard. T2683 has a possible approach (use APC as a graph server and only cache recent activity). Another approach would be to deploy dedicated servers to cache commit graphs. This is not realistic for most installs, but might be for Facebook.
  • T430 and D7641 discuss shaping and rate-limiting Ajax requests. These probably aren't desirable as end results here, but do make sense on other pages (commit pages, revision pages).
  • Any work performed here is very likely to be sweeping and extremely difficult for Facebook to cherry-pick. Particularly, Diffusion has been an area of focus since Septmeber and received hundreds of changes.

From T4465, a specific issue here is a directory with 16,000 files in it.