{"id":1181,"date":"2026-09-19T23:08:49","date_gmt":"2026-09-19T23:08:49","guid":{"rendered":"https:\/\/virtualserversvps.com\/blog\/?p=1181"},"modified":"2026-09-19T23:08:49","modified_gmt":"2026-09-19T23:08:49","slug":"php-8-4-vs-8-3-opcache-jit-vps-benchmark","status":"publish","type":"post","link":"https:\/\/virtualserversvps.com\/blog\/php-8-4-vs-8-3-opcache-jit-vps-benchmark\/","title":{"rendered":"PHP 8.4 vs 8.3 on a VPS: OPcache, JIT, and Real Throughput Benchmarks"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">PHP 8.4 shipped in November 2024 and is now the default on Ubuntu 24.04 repositories and most 2026 managed images. The question for anyone running a small VPS is concrete: does upgrading actually buy throughput, and does the JIT compiler finally do something useful for web workloads? We ran the same WordPress 6.7 install, the same database dump, and the same load profile across both versions on identical hardware to get numbers rather than opinions.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Test Environment<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Component<\/th><th>Specification<\/th><\/tr><\/thead><tbody><tr><td>Instance<\/td><td>2 vCPU (shared, EPYC 9004 class), 4 GB RAM<\/td><\/tr><tr><td>Storage<\/td><td>80 GB NVMe local, ext4, noatime<\/td><\/tr><tr><td>OS<\/td><td>Ubuntu 24.04.3 LTS, kernel 6.8<\/td><\/tr><tr><td>Web server<\/td><td>nginx 1.26.2, worker_processes 2<\/td><\/tr><tr><td>PHP<\/td><td>8.3.14 vs 8.4.11, php-fpm, static pool of 8 workers<\/td><\/tr><tr><td>OPcache<\/td><td>256 MB, validate_timestamps=0, 16k files<\/td><\/tr><tr><td>Database<\/td><td>MariaDB 11.4, 12 MB dataset, buffer pool 768 MB<\/td><\/tr><tr><td>Application<\/td><td>WordPress 6.7 + WooCommerce 9.3, Redis object cache on<\/td><\/tr><tr><td>Load generator<\/td><td>wrk2, 4 threads, 100 connections, 3-minute runs, 3 repetitions<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Both configurations ran on the same host, in the same hour, with the same Redis instance flushed between runs. The load generator ran from a separate VPS on the same provider to remove loopback from the measurement.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Raw Throughput<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Scenario<\/th><th>PHP 8.3 rps<\/th><th>PHP 8.4 rps<\/th><th>Change<\/th><th>p99 8.3 \/ 8.4<\/th><\/tr><\/thead><tbody><tr><td>Cached homepage (Redis + FastCGI cache)<\/td><td>4,180<\/td><td>4,610<\/td><td>+10.3%<\/td><td>12 ms \/ 11 ms<\/td><\/tr><tr><td>Uncached homepage (full PHP render)<\/td><td>112<\/td><td>131<\/td><td>+17.0%<\/td><td>410 ms \/ 342 ms<\/td><\/tr><tr><td>Product archive, 24 items, DB reads<\/td><td>87<\/td><td>99<\/td><td>+13.8%<\/td><td>520 ms \/ 448 ms<\/td><\/tr><tr><td>Cart + session write (Redis)<\/td><td>203<\/td><td>228<\/td><td>+12.3%<\/td><td>180 ms \/ 155 ms<\/td><\/tr><tr><td>Admin-ajax polling endpoint<\/td><td>640<\/td><td>735<\/td><td>+14.8%<\/td><td>48 ms \/ 41 ms<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The uncached path gains most, which matches the theory: 8.4 includes targeted optimisations to array handling, <code>str_*<\/code> functions, and the inheritance mechanism, all of which sit squarely in framework bootstrap code. Cached responses are bounded by nginx, so the win is limited to the small amount of PHP still executing.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Does the JIT Help Web Workloads?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Short answer: barely, and it can hurt. We ran the uncached homepage with <code>opcache.jit=tracing<\/code> and <code>jit_buffer_size=128M<\/code>:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Configuration<\/th><th>rps<\/th><th>Peak RSS per worker<\/th><\/tr><\/thead><tbody><tr><td>8.4, no JIT<\/td><td>131<\/td><td>48 MB<\/td><\/tr><tr><td>8.4, tracing JIT (128 MB buffer)<\/td><td>134<\/td><td>71 MB<\/td><\/tr><tr><td>8.4, function JIT<\/td><td>129<\/td><td>62 MB<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">A 2 percent gain for 23 MB of extra per-worker memory is a bad trade on a 4 GB box running 8 workers &mdash; that is 184 MB returned to the page cache for a rounding error in throughput. The JIT pays off for long-running computation (image processing, large loop-heavy jobs such as WP-CLI imports or report generation). Keep it off for the FPM pool serving web requests; if you need it, run it in a dedicated CLI process.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Memory and Stability<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Baseline RSS per worker:<\/strong> 44 MB on 8.3, 46 MB on 8.4 &mdash; effectively unchanged.<\/li>\n<li><strong>Compile time from cold:<\/strong> 8.4 built the 1,840-file opcache in 9.2 s versus 10.1 s on 8.3, so the post-reload warmup window is shorter.<\/li>\n<li><strong>Deprecations:<\/strong> WooCommerce 9.3 and WordPress 6.7 ran clean. Older plugins using implicit nullable parameter types will now emit deprecation notices &mdash; harmless to users, but noisy in <code>debug.log<\/code>.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">If your workers are already near the memory limit, verify the arithmetic before adding a new PHP release on top; the process described in <a href=\"https:\/\/virtualserversvps.com\/blog\/optimizing-php-fpm-low-memory-vps\">optimising PHP-FPM on a low-memory VPS<\/a> applies unchanged, and the real-world headroom is set by your instance size. Compare what each tier provides on our <a href=\"https:\/\/virtualserversvps.com\/\">VPS plans and hardware specification pages<\/a> &mdash; on a 1 GB instance the extra JIT buffer alone would be the difference between a working pool and an OOM kill.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Upgrade Recommendation<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Upgrade<\/strong> if you are on 8.2 or older, or if you run uncached dynamic pages at volume. A 12&ndash;17 percent throughput gain for a package upgrade is close to free.<\/li>\n<li><strong>Skip the JIT<\/strong> for web requests. Measure with it off, then try it on; the numbers above suggest it will not move your p95.<\/li>\n<li><strong>Test plugin compatibility in staging first.<\/strong> Deprecation notices are cosmetic, but a plugin suppressing PHP 8.4 strict warnings can still break an admin page.<\/li>\n<li><strong>Rebuild opcache on deploy.<\/strong> With <code>validate_timestamps=0<\/code> you must reload FPM or your new code will not be served.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The measurement method here is the point. Reproduce it on your own instance with your own traffic profile before trusting any published benchmark, including this one.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>PHP 8.4 shipped in November 2024 and is now the default on Ubuntu 24.04 repositories and most 2026 managed images. The question for anyone running a small VPS is concrete:&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":0,"footnotes":""},"categories":[3],"tags":[],"class_list":["post-1181","post","type-post","status-publish","format-standard","hentry","category-performance-optimization"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.1 (Yoast SEO v26.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>PHP 8.4 vs 8.3 on a VPS: OPcache, JIT, and Real Throughput Benchmarks - Virtual Servers VPS Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/virtualserversvps.com\/blog\/php-8-4-vs-8-3-opcache-jit-vps-benchmark\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PHP 8.4 vs 8.3 on a VPS: OPcache, JIT, and Real Throughput Benchmarks\" \/>\n<meta property=\"og:description\" content=\"PHP 8.4 vs 8.3 on a VPS: OPcache, JIT, and Real Throughput Benchmarks\" \/>\n<meta property=\"og:url\" content=\"https:\/\/virtualserversvps.com\/blog\/php-8-4-vs-8-3-opcache-jit-vps-benchmark\/\" \/>\n<meta property=\"og:site_name\" content=\"Virtual Servers VPS Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-19T23:08:49+00:00\" \/>\n<meta name=\"author\" content=\"Virtual-Servers-Vps-Editor\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Virtual-Servers-Vps-Editor\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/virtualserversvps.com\/blog\/php-8-4-vs-8-3-opcache-jit-vps-benchmark\/\",\"url\":\"https:\/\/virtualserversvps.com\/blog\/php-8-4-vs-8-3-opcache-jit-vps-benchmark\/\",\"name\":\"PHP 8.4 vs 8.3 on a VPS: OPcache, JIT, and Real Throughput Benchmarks - Virtual Servers VPS Blog\",\"isPartOf\":{\"@id\":\"https:\/\/virtualserversvps.com\/blog\/#website\"},\"datePublished\":\"2026-09-19T23:08:49+00:00\",\"author\":{\"@id\":\"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/82a299a8284a66ff49f97c74684724a0\"},\"breadcrumb\":{\"@id\":\"https:\/\/virtualserversvps.com\/blog\/php-8-4-vs-8-3-opcache-jit-vps-benchmark\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/virtualserversvps.com\/blog\/php-8-4-vs-8-3-opcache-jit-vps-benchmark\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/virtualserversvps.com\/blog\/php-8-4-vs-8-3-opcache-jit-vps-benchmark\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/virtualserversvps.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PHP 8.4 vs 8.3 on a VPS: OPcache, JIT, and Real Throughput Benchmarks\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/virtualserversvps.com\/blog\/#website\",\"url\":\"https:\/\/virtualserversvps.com\/blog\/\",\"name\":\"Virtual Servers VPS Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/virtualserversvps.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/82a299a8284a66ff49f97c74684724a0\",\"name\":\"Virtual-Servers-Vps-Editor\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d820b15f1cd028e97610d9adf536df7be5cb6423869967037d468d5355fa003f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d820b15f1cd028e97610d9adf536df7be5cb6423869967037d468d5355fa003f?s=96&d=mm&r=g\",\"caption\":\"Virtual-Servers-Vps-Editor\"},\"sameAs\":[\"https:\/\/virtualserversvps.com\/blog\"],\"url\":\"https:\/\/virtualserversvps.com\/blog\/author\/virtualserversvps\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"PHP 8.4 vs 8.3 on a VPS: OPcache, JIT, and Real Throughput Benchmarks - Virtual Servers VPS Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/virtualserversvps.com\/blog\/php-8-4-vs-8-3-opcache-jit-vps-benchmark\/","og_locale":"en_US","og_type":"article","og_title":"PHP 8.4 vs 8.3 on a VPS: OPcache, JIT, and Real Throughput Benchmarks","og_description":"PHP 8.4 vs 8.3 on a VPS: OPcache, JIT, and Real Throughput Benchmarks","og_url":"https:\/\/virtualserversvps.com\/blog\/php-8-4-vs-8-3-opcache-jit-vps-benchmark\/","og_site_name":"Virtual Servers VPS Blog","article_published_time":"2026-09-19T23:08:49+00:00","author":"Virtual-Servers-Vps-Editor","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Virtual-Servers-Vps-Editor","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/virtualserversvps.com\/blog\/php-8-4-vs-8-3-opcache-jit-vps-benchmark\/","url":"https:\/\/virtualserversvps.com\/blog\/php-8-4-vs-8-3-opcache-jit-vps-benchmark\/","name":"PHP 8.4 vs 8.3 on a VPS: OPcache, JIT, and Real Throughput Benchmarks - Virtual Servers VPS Blog","isPartOf":{"@id":"https:\/\/virtualserversvps.com\/blog\/#website"},"datePublished":"2026-09-19T23:08:49+00:00","author":{"@id":"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/82a299a8284a66ff49f97c74684724a0"},"breadcrumb":{"@id":"https:\/\/virtualserversvps.com\/blog\/php-8-4-vs-8-3-opcache-jit-vps-benchmark\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/virtualserversvps.com\/blog\/php-8-4-vs-8-3-opcache-jit-vps-benchmark\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/virtualserversvps.com\/blog\/php-8-4-vs-8-3-opcache-jit-vps-benchmark\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/virtualserversvps.com\/blog\/"},{"@type":"ListItem","position":2,"name":"PHP 8.4 vs 8.3 on a VPS: OPcache, JIT, and Real Throughput Benchmarks"}]},{"@type":"WebSite","@id":"https:\/\/virtualserversvps.com\/blog\/#website","url":"https:\/\/virtualserversvps.com\/blog\/","name":"Virtual Servers VPS Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/virtualserversvps.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/82a299a8284a66ff49f97c74684724a0","name":"Virtual-Servers-Vps-Editor","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/d820b15f1cd028e97610d9adf536df7be5cb6423869967037d468d5355fa003f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d820b15f1cd028e97610d9adf536df7be5cb6423869967037d468d5355fa003f?s=96&d=mm&r=g","caption":"Virtual-Servers-Vps-Editor"},"sameAs":["https:\/\/virtualserversvps.com\/blog"],"url":"https:\/\/virtualserversvps.com\/blog\/author\/virtualserversvps\/"}]}},"_links":{"self":[{"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/posts\/1181","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/comments?post=1181"}],"version-history":[{"count":1,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/posts\/1181\/revisions"}],"predecessor-version":[{"id":1184,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/posts\/1181\/revisions\/1184"}],"wp:attachment":[{"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/media?parent=1181"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/categories?post=1181"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/tags?post=1181"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}