Page MenuHomePhabricator
Feed Advanced Search

Oct 16 2017

epriestley added a comment to T13008: Process slot exhaustion in Phacility web tier.

The behavior of mod_reqtimeout is weird in production. Some of this is the LB, but some of it I don't have a good explanation for.

Oct 16 2017, 3:38 PM · Ops, Phacility
epriestley added a comment to T13008: Process slot exhaustion in Phacility web tier.

I was able to get web001 to wedge a lot of requests in "R" ("Reading Request") -- note "SS" is "seconds since beginning of most recent request".

Oct 16 2017, 2:55 PM · Ops, Phacility
epriestley added a comment to T13008: Process slot exhaustion in Phacility web tier.

I'm also unable to wedge secure. mod_status is working there, but since I can't wedge it it isn't very useful.

Oct 16 2017, 2:34 PM · Ops, Phacility
epriestley added a comment to T13008: Process slot exhaustion in Phacility web tier.

I'm going to take a more detailed look at local behavior for this specific request pattern.

Oct 16 2017, 2:19 PM · Ops, Phacility

Oct 14 2017

epriestley added a comment to T13008: Process slot exhaustion in Phacility web tier.

This is working somewhat better than before, but I'm still able to wedge apache with enough requests using a pre-patch version of libphutil. I'm going to take a more detailed look at local behavior for this specific request pattern.

Oct 14 2017, 4:06 PM · Ops, Phacility
epriestley added a revision to T13008: Process slot exhaustion in Phacility web tier: Unknown Object (Differential Revision).
Oct 14 2017, 3:00 PM · Ops, Phacility
epriestley added a comment to T13008: Process slot exhaustion in Phacility web tier.

It's currently possible for cluster hosts to hit rate limits against admin while doing normal deployment stuff, since they may make a lot of requests to admin very quickly.

Oct 14 2017, 2:45 PM · Ops, Phacility
epriestley added a comment to T13009: MySQL may take several seconds after restart to begin listening on domain socket.

I expect I can just reduce the data size to something manageable with the current workflow fairly easily

Oct 14 2017, 2:29 PM · Ops, Phacility
epriestley created T13009: MySQL may take several seconds after restart to begin listening on domain socket.
Oct 14 2017, 12:28 PM · Ops, Phacility

Oct 13 2017

epriestley edited the content of Changelog.
Oct 13 2017, 9:50 PM
epriestley created 2017 Week 41 (Mid October).
Oct 13 2017, 9:49 PM
epriestley added a comment to T13008: Process slot exhaustion in Phacility web tier.

(I also verified that real multipart/form-data works fine from a browser, by changing a project's profile picture here.)

Oct 13 2017, 9:40 PM · Ops, Phacility
epriestley added a comment to T13008: Process slot exhaustion in Phacility web tier.

On the server side, the connection test looks better: secure001 saw 8 HTTP 500's (this might be a bug in the multipart/form-data parser for whatever cURL is doing) and then 135 HTTP 429s, which is more or less exactly what the code is supposed to do. So I think most of the inconclusiveness on what was happening from the client side was curl / nohup stuff.

Oct 13 2017, 9:39 PM · Ops, Phacility
epriestley added a comment to T13008: Process slot exhaustion in Phacility web tier.

I used ab to verify the rate limiting code here, and got killed after a bit of abuse with ab -c 10 -n 200 ...:

Oct 13 2017, 9:25 PM · Ops, Phacility
epriestley set the image for Aphront to F5221631: profile.
Oct 13 2017, 9:13 PM
epriestley added a revision to T13000: Sustained MySQL I/O overwhelmed db009 / huge Ferret engine ngrams table: Unknown Object (Differential Revision).
Oct 13 2017, 8:53 PM · Ops, Phacility

Oct 12 2017

epriestley added a revision to T13003: `admin.phacility.com` is receiving a huge volume of "leafweb" traffic: Unknown Object (Differential Revision).
Oct 12 2017, 10:59 PM · Ops, Phacility
epriestley added a revision to T13008: Process slot exhaustion in Phacility web tier: Unknown Object (Differential Revision).
Oct 12 2017, 7:18 PM · Ops, Phacility
epriestley added a comment to T13008: Process slot exhaustion in Phacility web tier.

There's also a bug with arc here. It's supposed to limit simultaneous uploads to 4:

Oct 12 2017, 7:04 PM · Ops, Phacility
epriestley added a comment to T12857: Temporary directory fullness can cause daemon issues?.

Tangentially related here and to T12611, the traffic volume from the ongoing "attack" in T13003 filled /tmp on admin.phacility.com. I pruned some old logs for now, but the mitigations in T12611 (e.g., separate log volumes) would resolve this properly.

Oct 12 2017, 3:38 PM · Diffusion, Ops, Daemons, Phacility

Oct 11 2017

epriestley added a revision to T13008: Process slot exhaustion in Phacility web tier: Unknown Object (Differential Revision).
Oct 11 2017, 11:39 PM · Ops, Phacility

Oct 10 2017

epriestley added a revision to T13008: Process slot exhaustion in Phacility web tier: Unknown Object (Differential Revision).
Oct 10 2017, 10:26 PM · Ops, Phacility
epriestley added a revision to T13008: Process slot exhaustion in Phacility web tier: Unknown Object (Differential Revision).
Oct 10 2017, 10:17 PM · Ops, Phacility
epriestley added a revision to T13008: Process slot exhaustion in Phacility web tier: Unknown Object (Differential Revision).
Oct 10 2017, 8:36 PM · Ops, Phacility
epriestley added a revision to T13008: Process slot exhaustion in Phacility web tier: Unknown Object (Differential Revision).
Oct 10 2017, 8:23 PM · Ops, Phacility
epriestley added a revision to T13008: Process slot exhaustion in Phacility web tier: Unknown Object (Differential Revision).
Oct 10 2017, 7:09 PM · Ops, Phacility
epriestley added a project to T13008: Process slot exhaustion in Phacility web tier: Ops.
Oct 10 2017, 7:04 PM · Ops, Phacility
epriestley updated the task description for T13008: Process slot exhaustion in Phacility web tier.
Oct 10 2017, 7:02 PM · Ops, Phacility
epriestley added a revision to T13008: Process slot exhaustion in Phacility web tier: Unknown Object (Differential Revision).
Oct 10 2017, 6:58 PM · Ops, Phacility
epriestley created T13008: Process slot exhaustion in Phacility web tier.
Oct 10 2017, 6:55 PM · Ops, Phacility
epriestley closed T13007: Integrating `arc lint` and auto-fixers as Invalid.

Please file feature requests through the community forum (https://discourse.phabricator-community.org) or a support pact (https://admin.phacility.com/book/phacility/article/support_pacts/).

Oct 10 2017, 6:23 PM · Lint, Arcanist
epriestley added a comment to T4369: Phabricator HTTP repository hosting has fairly severe scalability limits.

Our access to superglobals in PhabricatorStartup comes from D6672, and works around an issue where PHP's (fairly insane) sanitization filters are configured.

Oct 10 2017, 4:31 PM · Diffusion (v3), Restricted Project
epriestley added a comment to T4369: Phabricator HTTP repository hosting has fairly severe scalability limits.

Would auto_globals_jit help?

Oct 10 2017, 4:16 PM · Diffusion (v3), Restricted Project
epriestley added a comment to T12991: Enable notifications for admin.phacility.com.

I think this is working properly in production, I recall getting at least one notification today.

Oct 10 2017, 12:06 AM
epriestley added a revision to T13000: Sustained MySQL I/O overwhelmed db009 / huge Ferret engine ngrams table: Unknown Object (Differential Revision).
Oct 10 2017, 12:04 AM · Ops, Phacility

Oct 9 2017

epriestley created T13006: Passphrase can't distinguish between correct, mangled, and passphrase-encoded SSH keys.
Oct 9 2017, 7:55 PM · Passphrase
epriestley added a member for Community: 0.
Oct 9 2017, 5:54 PM
20after4 awarded T13000: Sustained MySQL I/O overwhelmed db009 / huge Ferret engine ngrams table a Baby Tequila token.
Oct 9 2017, 1:10 AM · Ops, Phacility

Oct 7 2017

epriestley added a comment to T13004: [Stable] bin/storage dump fails if there's a password set.

We should probably update the documentation to recommend --output and --compress, since the error behavior (e.g., in the event of a full disk) is better.

Oct 7 2017, 8:26 PM · Bug Report
epriestley closed T13003: `admin.phacility.com` is receiving a huge volume of "leafweb" traffic as Resolved.

This is still ongoing but it isn't impacting us so I don't plan to do anything else here.

Oct 7 2017, 12:14 PM · Ops, Phacility
epriestley added a comment to T13003: `admin.phacility.com` is receiving a huge volume of "leafweb" traffic.

I've deployed the slightly more formal preamble. It no longer has the remote address logging, but here are the addresses captured up to now (first column: request count; second column: address):

Oct 7 2017, 12:10 PM · Ops, Phacility
epriestley closed T13004: [Stable] bin/storage dump fails if there's a password set as Resolved by committing Restricted Diffusion Commit.
Oct 7 2017, 12:00 PM · Bug Report

Oct 6 2017

epriestley added a comment to T4369: Phabricator HTTP repository hosting has fairly severe scalability limits.

A wrench in the gears here is that disabling enable_post_data_reading also disables $_FILES, which we use in about 20 places with vanilla HTTP <input type="file" /> controls. So on top of initialization order issues with $_POST, we also need to build a multipart/form-data parser that can populate a synthetic $_FILES or some similar construct.

Oct 6 2017, 11:05 PM · Diffusion (v3), Restricted Project
epriestley merged T11546: File Storage setup doc makes a hokey suggestion into T4369: Phabricator HTTP repository hosting has fairly severe scalability limits.
Oct 6 2017, 10:42 PM · Diffusion (v3), Restricted Project
epriestley merged task T11546: File Storage setup doc makes a hokey suggestion into T4369: Phabricator HTTP repository hosting has fairly severe scalability limits.
Oct 6 2017, 10:42 PM · Feature Request, Documentation
epriestley added a comment to T11546: File Storage setup doc makes a hokey suggestion.

I'm going to merge this into T4369, which has some similar discussion and more context.

Oct 6 2017, 10:42 PM · Feature Request, Documentation
epriestley edited the content of Changelog.
Oct 6 2017, 9:30 PM
epriestley created 2017 Week 40 (Early October).
Oct 6 2017, 9:30 PM
epriestley added a comment to T11786: Loop/degenerate behavior in RepositoryGraphCache.

PHI109 captured a slightly more illuminating error. D18692 has some discussion.

Oct 6 2017, 7:09 PM · Performance, Diffusion
epriestley added a revision to T11786: Loop/degenerate behavior in RepositoryGraphCache: Unknown Object (Differential Revision).
Oct 6 2017, 7:08 PM · Performance, Diffusion
epriestley added a comment to T11413: Support renaming Phacility instances.

We now have three of these in Support (PHI63, PHI107, PHI128). I think the pathway forward is something like:

Oct 6 2017, 4:24 PM · Phacility
epriestley added a revision to T13000: Sustained MySQL I/O overwhelmed db009 / huge Ferret engine ngrams table: Unknown Object (Differential Revision).
Oct 6 2017, 2:51 PM · Ops, Phacility
epriestley added a revision to T13000: Sustained MySQL I/O overwhelmed db009 / huge Ferret engine ngrams table: Unknown Object (Differential Revision).
Oct 6 2017, 2:09 PM · Ops, Phacility
epriestley added a revision to T13003: `admin.phacility.com` is receiving a huge volume of "leafweb" traffic: Unknown Object (Differential Revision).
Oct 6 2017, 2:02 PM · Ops, Phacility
epriestley added a comment to T13003: `admin.phacility.com` is receiving a huge volume of "leafweb" traffic.

This is still ongoing, although we're weathering it without any issues.

Oct 6 2017, 1:54 PM · Ops, Phacility
stevex awarded T11217: Make Tokens modular / real application a Manufacturing Defect? token.
Oct 6 2017, 1:43 PM · Restricted Project, Contributor Onboarding, Celerity, Tokens
epriestley added a comment to T13000: Sustained MySQL I/O overwhelmed db009 / huge Ferret engine ngrams table.

Yes, use bin/storage dump --no-indexes. See here for more details:

Oct 6 2017, 1:43 PM · Ops, Phacility
kuba-orlik awarded T8783: Unprototype Nuance (v1) a Love token.
Oct 6 2017, 8:25 AM · Nuance, Restricted Project

Oct 5 2017

epriestley added a comment to T13003: `admin.phacility.com` is receiving a huge volume of "leafweb" traffic.

merely a large number and not an enormous number

Oct 5 2017, 9:33 PM · Ops, Phacility
epriestley added a comment to T13003: `admin.phacility.com` is receiving a huge volume of "leafweb" traffic.

Handful of these, too:

Oct 5 2017, 9:29 PM · Ops, Phacility
epriestley added a comment to T13003: `admin.phacility.com` is receiving a huge volume of "leafweb" traffic.

I early 500'd these requests in preamble.php and load seems better now:

Oct 5 2017, 9:24 PM · Ops, Phacility
epriestley added a comment to T13003: `admin.phacility.com` is receiving a huge volume of "leafweb" traffic.

There are a very large number of originating IP addresses so I'm going to filter this traffic by path rather than by IP address.

Oct 5 2017, 9:16 PM · Ops, Phacility
epriestley created T13003: `admin.phacility.com` is receiving a huge volume of "leafweb" traffic.
Oct 5 2017, 9:08 PM · Ops, Phacility
epriestley added a comment to T12907: Unable to download large files through alternative file domain.

On the bin/files download side of things, we currently buffer the whole file into a string and then hit this:

Oct 5 2017, 8:41 PM · Bug Report
epriestley added a comment to T12907: Unable to download large files through alternative file domain.

For consistency, I gave the content Cloudfront distribution a 60-second timeout as well.

Oct 5 2017, 8:28 PM · Bug Report
epriestley added a comment to T12907: Unable to download large files through alternative file domain.

Pulling stuff from admin.phacility.com via Cloudfront, I get this instead:

Oct 5 2017, 8:20 PM · Bug Report
epriestley added a comment to T12907: Unable to download large files through alternative file domain.

In the log above, this download should have worked:

Oct 5 2017, 7:43 PM · Bug Report
epriestley removed a member for Phacility High Command: chad.
Oct 5 2017, 5:02 PM
epriestley added a member for Phacility: amckinley.
Oct 5 2017, 5:02 PM
epriestley removed a member for Phacility: chad.
Oct 5 2017, 5:02 PM
epriestley removed a member for Phacility Core Access: chad.
Oct 5 2017, 5:02 PM
epriestley added a comment to T12612: Design (and possibly implement) production rate limiting controls.

In PHI120, we hit an issue where an instance (whose members seem to be located in Asia) performed 1,600 file uploads at roughly 256KB/sec, apparently putting a substantial amount of pressure on workers for ~12 minutes.

Oct 5 2017, 2:48 PM · Phacility, Ops
epriestley added a revision to T13000: Sustained MySQL I/O overwhelmed db009 / huge Ferret engine ngrams table: Unknown Object (Differential Revision).
Oct 5 2017, 12:27 AM · Ops, Phacility

Oct 4 2017

epriestley added a revision to T13000: Sustained MySQL I/O overwhelmed db009 / huge Ferret engine ngrams table: Unknown Object (Differential Revision).
Oct 4 2017, 11:55 PM · Ops, Phacility
epriestley added a revision to T13000: Sustained MySQL I/O overwhelmed db009 / huge Ferret engine ngrams table: Unknown Object (Differential Revision).
Oct 4 2017, 11:54 PM · Ops, Phacility
epriestley added a revision to T13000: Sustained MySQL I/O overwhelmed db009 / huge Ferret engine ngrams table: Unknown Object (Differential Revision).
Oct 4 2017, 11:49 PM · Ops, Phacility
epriestley updated subscribers of T5016: Allow Herald rules for Maniphest to act on custom task fields.

The best place for this kind of question is now your organization's support pact -- @tammybutow or @alexmv should be able to help you get access.

Oct 4 2017, 11:34 PM · Herald, Custom Fields
epriestley added a revision to T13000: Sustained MySQL I/O overwhelmed db009 / huge Ferret engine ngrams table: Unknown Object (Differential Revision).
Oct 4 2017, 6:58 PM · Ops, Phacility
epriestley added a revision to T13000: Sustained MySQL I/O overwhelmed db009 / huge Ferret engine ngrams table: Unknown Object (Differential Revision).
Oct 4 2017, 5:24 PM · Ops, Phacility
epriestley added a comment to T13000: Sustained MySQL I/O overwhelmed db009 / huge Ferret engine ngrams table.

Another thing we can do here which will generally reduce the operational load is to be more selective about how we dump/export tables from MySQL. Broadly, we have three general classes of tables today:

Oct 4 2017, 3:51 PM · Ops, Phacility

Oct 3 2017

epriestley added a comment to T13000: Sustained MySQL I/O overwhelmed db009 / huge Ferret engine ngrams table.

I've pushed the MySQL configuration tweaks here, and manually built the common ngrams table with a 0.15 threshold.

Oct 3 2017, 9:47 PM · Ops, Phacility
epriestley created T13001: Ambiguous commits should prompt you to select from options.
Oct 3 2017, 8:24 PM · Diffusion
epriestley added a comment to T12991: Enable notifications for admin.phacility.com.

(Basically, a notification is just a copy of a feed story which we deliver directly to an individual at the same time we publish the feed story, so feed and notifications are intertwined.)

Oct 3 2017, 8:20 PM
epriestley added a comment to T12991: Enable notifications for admin.phacility.com.

Mostly right: each node server process has both a "client" service and an "admin" service on different ports. Everything else is pretty much accurate, except that "admin server -> client server" is generally inside the same process.

Oct 3 2017, 8:19 PM
epriestley added a revision to T13000: Sustained MySQL I/O overwhelmed db009 / huge Ferret engine ngrams table: Unknown Object (Differential Revision).
Oct 3 2017, 7:41 PM · Ops, Phacility
epriestley added a comment to T13000: Sustained MySQL I/O overwhelmed db009 / huge Ferret engine ngrams table.

I'm also going to increase the db tier innodb_buffer_pool_size from 4GB to 6GB. The hosts have 7.5GB of RAM and 8GB of swap, and are pretty much sitting there with a little under 3GB of RAM mostly unused and no other load.

Oct 3 2017, 7:31 PM · Ops, Phacility
epriestley added a comment to T13000: Sustained MySQL I/O overwhelmed db009 / huge Ferret engine ngrams table.

The thing I'm mostly looking at is how many queries are pushed down to 0 ngrams, i.e. they can't use the ngram index.

Oct 3 2017, 6:20 PM · Ops, Phacility
epriestley added a comment to T13000: Sustained MySQL I/O overwhelmed db009 / huge Ferret engine ngrams table.

I looked at how the last 1,000 queries on this instance would be affected by different "common" thresholds. Note that these charts are all sort of garbage (X axis is nonlinear) because I couldn't figure out how basic spreadsheet software works.

Oct 3 2017, 6:06 PM · Ops, Phacility

Oct 2 2017

epriestley added a revision to T13000: Sustained MySQL I/O overwhelmed db009 / huge Ferret engine ngrams table: Unknown Object (Differential Revision).
Oct 2 2017, 11:40 PM · Ops, Phacility
epriestley added a revision to T13000: Sustained MySQL I/O overwhelmed db009 / huge Ferret engine ngrams table: Unknown Object (Differential Revision).
Oct 2 2017, 10:50 PM · Ops, Phacility
epriestley added a comment to T13000: Sustained MySQL I/O overwhelmed db009 / huge Ferret engine ngrams table.

Here are some possible structural changes we can make to the table, using the Maniphest ngrams table on this install as an example dataset (this is roughly 50x smaller than the target dataset):

Oct 2 2017, 10:18 PM · Ops, Phacility
epriestley added a revision to T13000: Sustained MySQL I/O overwhelmed db009 / huge Ferret engine ngrams table: Unknown Object (Differential Revision).
Oct 2 2017, 8:01 PM · Ops, Phacility
epriestley added a comment to T13000: Sustained MySQL I/O overwhelmed db009 / huge Ferret engine ngrams table.

There's still a big element of mystery here: why did MySQL sustain 80MB/sec of write I/O without daemons running? There "should" have been no queries against the fngrams table, and a large table "should" not require huge I/O volumes if it isn't being used. I don't think it's totally implausible that this was some kind of general thrash/swap/memory management issue in MySQL (the innodb_buffer_pool_size on these hosts if 4GB, and mysql was using all of it) but I would expect "paging-like" activities to cause a large read volume, not a large write volume.

Oct 2 2017, 3:48 PM · Ops, Phacility
epriestley created T13000: Sustained MySQL I/O overwhelmed db009 / huge Ferret engine ngrams table.
Oct 2 2017, 3:14 PM · Ops, Phacility
epriestley created T12999: Replace cluster magnetic volumes with SSD volumes.
Oct 2 2017, 2:48 PM · Phacility, Ops
epriestley added a revision to T12526: parse_url() behavior has changed with PHP7, causing libphutil unit tests to fail and possibly creating security concerns: Unknown Object (Differential Revision).
Oct 2 2017, 2:14 PM · libphutil, Security

Sep 30 2017

epriestley added a comment to T12526: parse_url() behavior has changed with PHP7, causing libphutil unit tests to fail and possibly creating security concerns.

(I'll fix this if you don't get there first, but have used up all my brain energy for today. And thanks for the report!)

Sep 30 2017, 10:35 PM · libphutil, Security
epriestley added a comment to T12526: parse_url() behavior has changed with PHP7, causing libphutil unit tests to fail and possibly creating security concerns.

Would it be acceptable to change PhutilRemarkupHyperlinkRule to catch this exception and behave as if it were a non-whitelisted protocol? (Happy to draft the patch, just want to check before I do so)

Sep 30 2017, 10:32 PM · libphutil, Security
epriestley edited the content of Changelog.
Sep 30 2017, 1:04 AM
epriestley created 2017 Week 39 (Very Late September).
Sep 30 2017, 1:03 AM