[{"data":1,"prerenderedAt":390},["ShallowReactive",2],{"navigation":3,"/docs/getting-started/quick-start":96,"/docs/getting-started/quick-start-surround":385},[4],{"title":5,"path":6,"stem":7,"children":8,"page":43},"Docs","/docs","docs",[9,25,44,64,80,88],{"title":10,"path":11,"stem":12,"children":13,"icon":24},"Getting Started","/docs/getting-started","docs/1.getting-started/1.index",[14,16,20],{"title":15,"path":11,"stem":12},"Introduction",{"title":17,"path":18,"stem":19},"Quick start","/docs/getting-started/quick-start","docs/1.getting-started/2.quick-start",{"title":21,"path":22,"stem":23},"Running from source","/docs/getting-started/running-from-source","docs/1.getting-started/3.running-from-source","i-lucide-rocket",{"title":26,"icon":27,"path":28,"stem":29,"children":30,"page":43},"Configuration","i-lucide-settings-2","/docs/configuration","docs/2.configuration",[31,35,39],{"title":32,"path":33,"stem":34},"Adding a real database","/docs/configuration/adding-databases","docs/2.configuration/1.adding-databases",{"title":36,"path":37,"stem":38},"Customizing the image","/docs/configuration/customizing-the-image","docs/2.configuration/2.customizing-the-image",{"title":40,"path":41,"stem":42},"Common tuning strategies","/docs/configuration/common-tuning-strategies","docs/2.configuration/3.common-tuning-strategies",false,{"title":45,"path":46,"stem":47,"children":48,"icon":63},"Image variations","/docs/image-variations","docs/3.image-variations/1.index",[49,51,55,59],{"title":50,"path":46,"stem":47},"Choosing a variation",{"title":52,"path":53,"stem":54},"FPM-NGINX","/docs/image-variations/fpm-nginx","docs/3.image-variations/2.fpm-nginx",{"title":56,"path":57,"stem":58},"FrankenPHP","/docs/image-variations/frankenphp","docs/3.image-variations/3.frankenphp",{"title":60,"path":61,"stem":62},"FPM-Apache","/docs/image-variations/fpm-apache","docs/3.image-variations/4.fpm-apache","i-lucide-layers",{"title":65,"path":66,"stem":67,"children":68,"icon":79},"Benchmarks & Methodology","/docs/benchmarks","docs/4.benchmarks/1.index",[69,71,75],{"title":70,"path":66,"stem":67},"Methodology",{"title":72,"path":73,"stem":74},"Reading your results","/docs/benchmarks/reading-your-results","docs/4.benchmarks/2.reading-your-results",{"title":76,"path":77,"stem":78},"Testing from another machine","/docs/benchmarks/testing-from-another-machine","docs/4.benchmarks/3.testing-from-another-machine","i-lucide-flask-conical",{"title":81,"path":82,"stem":83,"children":84,"icon":87},"Community Results","/docs/community-results","docs/5.community-results/1.index",[85],{"title":86,"path":82,"stem":83},"Submitting your results","i-lucide-users",{"title":89,"path":90,"stem":91,"children":92,"icon":95},"FAQ","/docs/faq","docs/6.faq/1.index",[93],{"title":94,"path":90,"stem":91},"Frequently asked questions","i-lucide-circle-help",{"id":97,"title":17,"body":98,"description":377,"extension":378,"links":379,"meta":380,"navigation":381,"path":18,"redirect":379,"seo":382,"sitemap":383,"stem":19,"__hash__":384},"docs/docs/1.getting-started/2.quick-start.md",{"type":99,"value":100,"toc":369},"minimark",[101,110,339,344,365],[102,103,104,105,109],"p",{},"BenchKit is available to ",[106,107,108],"a",{"href":22},"deploy from source"," or a container image. The easiest way to deploy BenchKit is with Docker, which is what this quick start guide will cover.",[111,112,114,119,122,126,129,164,174,184,188,196,235,238,242,245,259,304,312,323,327],"steps",{"level":113},"3",[115,116,118],"h3",{"id":117},"deploy-a-server","Deploy a server",[102,120,121],{},"Pick any size server and host you want to test. BenchKit is designed to be run as a standalone application and since it runs as a container image, it's very easy to clean up after you finish.",[115,123,125],{"id":124},"install-docker","Install Docker",[102,127,128],{},"On a fresh server, the quickest way to install Docker is Docker's own script.",[130,131,137],"pre",{"className":132,"code":133,"filename":134,"language":135,"meta":136,"style":136},"language-bash shiki shiki-themes github-dark","curl -fsSL https://get.docker.com | bash\n","Terminal","bash","",[138,139,140],"code",{"__ignoreMap":136},[141,142,145,149,153,157,161],"span",{"class":143,"line":144},"line",1,[141,146,148],{"class":147},"svObZ","curl",[141,150,152],{"class":151},"sDLfK"," -fsSL",[141,154,156],{"class":155},"sU2Wk"," https://get.docker.com",[141,158,160],{"class":159},"snl16"," |",[141,162,163],{"class":147}," bash\n",[102,165,166,167,170,171,173],{},"Installing Docker needs root. Run the command as root, or put ",[138,168,169],{},"sudo"," in front of ",[138,172,135],{},".",[102,175,176,177,183],{},"On a machine you intend to keep, follow the ",[106,178,182],{"href":179,"rel":180},"https://docs.docker.com/engine/install/",[181],"nofollow","official Docker Engine install guide"," instead. It sets up the package repository, which keeps Docker updated along with the rest of the system.",[115,185,187],{"id":186},"start-the-container","Start the container",[189,190,191],"note",{},[102,192,193,194,173],{},"By default we ship FPM-NGINX. For FrankenPHP and FPM-Apache variations see ",[106,195,45],{"href":46},[130,197,199],{"className":132,"code":198,"filename":134,"language":135,"meta":136,"style":136},"docker run -p 80:8080 \\\n  -v benchkit-runs:/var/www/html/storage/app/runs \\\n  serversideup/benchkit-laravel:latest\n",[138,200,201,218,229],{"__ignoreMap":136},[141,202,203,206,209,212,215],{"class":143,"line":144},[141,204,205],{"class":147},"docker",[141,207,208],{"class":155}," run",[141,210,211],{"class":151}," -p",[141,213,214],{"class":155}," 80:8080",[141,216,217],{"class":151}," \\\n",[141,219,221,224,227],{"class":143,"line":220},2,[141,222,223],{"class":151},"  -v",[141,225,226],{"class":155}," benchkit-runs:/var/www/html/storage/app/runs",[141,228,217],{"class":151},[141,230,232],{"class":143,"line":231},3,[141,233,234],{"class":155},"  serversideup/benchkit-laravel:latest\n",[102,236,237],{},"The app listens on port 8080 inside the container, and the command above publishes it on port 80 of the host. The volume holds your run history. Without it, your results disappear with the container.",[115,239,241],{"id":240},"run-a-benchmark","Run a benchmark",[102,243,244],{},"Once the container is running, simply visit:",[130,246,248],{"className":132,"code":247,"language":135,"meta":136,"style":136},"http://\u003Cyour-server-ip>/\n",[138,249,250],{"__ignoreMap":136},[141,251,252,255],{"class":143,"line":144},[141,253,254],{"class":147},"http://",[141,256,258],{"class":257},"s95oV","\u003Cyour-server-ip>/\n",[189,260,261,267,297],{},[102,262,263,264,266],{},"Notice the default is ",[138,265,254],{}," since there's no login or sensitive data with BenchKit. If you prefer to use the self-signed certificate, expose the HTTPS port instead:",[130,268,270],{"className":132,"code":269,"filename":134,"language":135,"meta":136,"style":136},"docker run -p 443:8443 \\\n  -v benchkit-runs:/var/www/html/storage/app/runs \\\n  serversideup/benchkit-laravel:latest\n",[138,271,272,285,293],{"__ignoreMap":136},[141,273,274,276,278,280,283],{"class":143,"line":144},[141,275,205],{"class":147},[141,277,208],{"class":155},[141,279,211],{"class":151},[141,281,282],{"class":155}," 443:8443",[141,284,217],{"class":151},[141,286,287,289,291],{"class":143,"line":220},[141,288,223],{"class":151},[141,290,226],{"class":155},[141,292,217],{"class":151},[141,294,295],{"class":143,"line":231},[141,296,234],{"class":155},[102,298,299,300,303],{},"Then use ",[138,301,302],{},"https://\u003Cyour-server-ip>/"," to access BenchKit.",[102,305,306,307,311],{},"Open the server in your browser and press ",[308,309,310],"strong",{},"Start Benchmark",". The run happens on the server rather than in the browser. You can close the tab, reload the page, or follow the run from another device without disturbing it.",[102,313,314,315,318,319,322],{},"Before you start, the settings drawer lets you pick the ",[308,316,317],{},"Quick"," preset for a shorter run or ",[308,320,321],{},"Full"," to measure everything, and it estimates how long your choice will take.",[115,324,326],{"id":325},"share-your-result","Share your result",[102,328,329,330,333,334,338],{},"When the run finishes, press ",[308,331,332],{},"Submit result",". BenchKit opens a pre-filled GitHub issue containing your numbers. A bot checks the submission and opens a pull request, and your run appears in the ",[106,335,337],{"href":336},"/results","community gallery"," once a maintainer merges it.",[340,341,343],"h2",{"id":342},"next-steps","Next steps",[345,346,347,353,359],"card-group",{},[348,349,350],"card",{"icon":63,"title":45,"to":46},[102,351,352],{},"Run the same application on FrankenPHP, FPM-NGINX, or FPM-Apache and compare them.",[348,354,356],{"icon":355,"title":36,"to":37},"i-lucide-sliders-horizontal",[102,357,358],{},"Change OPcache, JIT, and the FPM pool with environment variables.",[348,360,362],{"icon":361,"title":21,"to":22},"i-lucide-git-branch",[102,363,364],{},"Deploy to a host that takes a repository instead of a container.",[366,367,368],"style",{},"html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}html pre.shiki code .snl16, html code.shiki .snl16{--shiki-default:#F97583}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}",{"title":136,"searchDepth":220,"depth":220,"links":370},[371,372,373,374,375,376],{"id":117,"depth":231,"text":118},{"id":124,"depth":231,"text":125},{"id":186,"depth":231,"text":187},{"id":240,"depth":231,"text":241},{"id":325,"depth":231,"text":326},{"id":342,"depth":220,"text":343},"Run BenchKit on the server you want to measure.","md",null,{},true,{"title":17,"description":377},{"loc":18},"QNTsS6DUWafa4DCdZewJ-hAgrJd4DKTPboWjEry3ve0",[386,388],{"title":15,"path":11,"stem":12,"description":387,"children":-1},"What BenchKit is and why we built it.",{"title":21,"path":22,"stem":23,"description":389,"children":-1},"Run BenchKit on Laravel Cloud, Railway, or any host that wants a repository instead of a container.",1787761544505]