Uncategorized

  • Container memory limits and the OOM killer

    A container without a memory limit can take the host down. A container with one gets its process killed by the kernel, which from inside looks like the…

  • Gutenberg is a plugin this year, and only a plugin

    The editor is under active development as a feature plugin, which means it can be installed, it changes weekly, and nothing about a site depends on it unless…

  • Swarm mode is in the engine and mostly unused

    Since 1.12 the engine has had orchestration built in — docker swarm init and a cluster exists. It is genuinely simple and almost nobody is running it, which…

  • depends_on does not wait for readiness, and never did

    depends_on controls start order and nothing else. The database container being started is not the database accepting connections, so the application starts, fails to connect, and exits. Version…

  • Logstash grok is a regex engine with a bad reputation

    Grok is regular expressions with named patterns, and it earns its reputation honestly: a pattern that backtracks on an unexpected line will use an entire CPU and stall…

  • Multi-stage builds arrived in 17.05

    Building assets inside the runtime image drags a compiler toolchain into production, and deleting it afterwards does nothing because layers are additive. Until May the workaround was two…

  • Context mapping before service boundaries

    Deciding services first and then discovering the relationships produces boundaries that cut through a transaction. Mapping the relationships first tells you which splits are cheap and which are…

  • Telescope does not exist yet; here is the query log

    Finding out what queries a request actually ran means either a package, a debug bar that changes the page, or the listener that has been in the framework…

  • Composer 1.4 made the platform check a real error

    Installing a package requiring a PHP version newer than the one running used to be a warning in some paths. Composer 1.4 tightened it, which surfaces a problem…

  • The optimizer trace explains a plan you disagree with

    EXPLAIN says what the optimiser chose. It does not say why, so when a perfectly good index is ignored there is nothing to read. The optimizer trace is…