Skip to content

Commit

Permalink
perf(gatsby): drop severe scaling regression caused by analytics
Browse files Browse the repository at this point in the history
Regression introduced in #22851

The problem seems to be that these calls to `v8.serialize` trigger the gc to start a full hold-the-world mark-and-sweep step sooner. In a benchmark of 150k files, the step would trigger almost always after between 100k and 110k queries had run, and it would pause the process for 60+ seconds.

Example benchmark results from before and after that PR:

```
info bootstrap finished - 86.758 s
success Building production JavaScript and CSS bundles - 9.404s
success run queries - 205.676s - 150002/150002 729.31/s
success Building static HTML for pages - 142.800s - 150002/150002 1050.44/s
info Done building in 451.33 sec
```

```
info bootstrap finished - 85.933 s
success Building production JavaScript and CSS bundles - 8.335s
success run queries - 84.795s - 150002/150002 1769.00/s
success Building static HTML for pages - 141.000s - 150002/150002 1063.84/s
info Done building in 320.158 sec
```

This is very consistent behavior. We looked at the change and agreed that the best was to just drop this measurement since it was for the sake of analytics and a non-vital metric to record. We'd rather have the perf than the metric.
  • Loading branch information
pvdz committed Jun 2, 2020
1 parent 5c1d4a4 commit 1185540
Showing 1 changed file with 1 addition and 8 deletions.
9 changes: 1 addition & 8 deletions packages/gatsby/src/query/graphql-runner.ts
Original file line number Diff line number Diff line change
Expand Up @@ -165,14 +165,7 @@ export default class GraphQLRunner {
if (typeof statsQuery !== `string`) {
statsQuery = statsQuery.body
}
this.stats.uniqueOperations.add(
crypto
.createHash(`sha1`)
.update(statsQuery)
.update(JSON.stringify(context))
.digest(`hex`)
)


this.stats.uniqueQueries.add(
crypto
.createHash(`sha1`)
Expand Down

0 comments on commit 1185540

Please sign in to comment.