laravel / octane

Supercharge your Laravel application's performance.
https://laravel.com/docs/octane
MIT License
3.74k stars 291 forks source link

FrankenPHP crashes on high loads #791

Closed mo7zayed closed 6 months ago

mo7zayed commented 8 months ago

Octane Version

v2.2.5

Laravel Version

10.38.2

PHP Version

8.2.13

What server type are you using?

FrankenPHP

Server Version

v1.0.1

Database Driver & Version

No response

Description

When I run a load test a fresh laravel app using apache utils tools ab the server suddenly caches. for example

pc@pc:~$ ab -n 100 -c 10 http://127.0.0.1:8000/
This is ApacheBench, Version 2.3 <$Revision: 1879490 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 127.0.0.1 (be patient)...apr_socket_recv: Connection refused (111)
Total of 11 requests completed

This issue happens when the concurrency is high, when running 10 times the number of requests with low concurrency I get great results, Note that this scenario doesn't always happen, It happens randomly when load testing with high concurrency

pc@pc:~$ ab -n 1000 -c 1 http://127.0.0.1:8000/
This is ApacheBench, Version 2.3 <$Revision: 1879490 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 127.0.0.1 (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests

Server Software:        Caddy
Server Hostname:        127.0.0.1
Server Port:            8000

Document Path:          /
Document Length:        27514 bytes

Concurrency Level:      1
Time taken for tests:   4.885 seconds
Complete requests:      1000
Failed requests:        0
Total transferred:      28621000 bytes
HTML transferred:       27514000 bytes
Requests per second:    204.72 [#/sec] (mean)
Time per request:       4.885 [ms] (mean)
Time per request:       4.885 [ms] (mean, across all concurrent requests)
Transfer rate:          5721.89 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:     1    5  36.6      1     399
Waiting:        1    1   0.7      1      11
Total:          1    5  36.6      1     399

Percentage of the requests served within a certain time (ms)
  50%      1
  66%      1
  75%      1
  80%      1
  90%      1
  95%      2
  98%      5
  99%    161
 100%    399 (longest request)

While debugging this, I noticed when running ./frankenphp -v I see that the used php version is 8.3.0 while my local php version is used to serve the application is 8.2.13

Steps To Reproduce

Here is a github repo containing a fresh laravel app with latest octane installed, just pull and run the following commands

Then in another terminal tab run ab -n 1000 -c 10 http://127.0.0.1:8000/

https://github.com/mo7zayed/frankenphp-issue

nunomaduro commented 8 months ago

Can you use php artisan octane:start --server=frankenphp --log-level=debug, and grab the logs related to the crash?

mo7zayed commented 8 months ago

@nunomaduro Sure, You can find the logs here

{"level":"info","ts":1703278647.0544071,"msg":"using provided configuration","config_file":"/home/mo7zayed/Desktop/work/mo7zayed/habd/frankenphp-issue/vendor/laravel/octane/src/Commands/stubs/Caddyfile","config_adapter":""}
{"level":"info","ts":1703278647.0557559,"logger":"admin","msg":"admin endpoint started","address":"localhost:2019","enforce_origin":false,"origins":["//localhost:2019","//[::1]:2019","//127.0.0.1:2019"]}
{"level":"info","ts":1703278647.0559845,"logger":"tls.cache.maintenance","msg":"started background certificate maintenance","cache":"0xc00006b280"}
{"level":"info","ts":1703278647.105399,"msg":"FrankenPHP started 🐘","php_version":"8.3.0"}
{"level":"info","ts":1703278647.1055713,"logger":"http.log","msg":"server running","name":"srv0","protocols":["h1","h2","h3"]}
{"level":"info","ts":1703278647.1056757,"msg":"autosaved config (load with --resume flag)","file":"/home/mo7zayed/.config/caddy/autosave.json"}
{"level":"info","ts":1703278647.1056812,"msg":"serving initial configuration"}
{"level":"warn","ts":1703278647.1084278,"logger":"tls","msg":"storage cleaning happened too recently; skipping for now","storage":"FileStorage:/home/mo7zayed/.local/share/caddy","instance":"399ac890-5e06-4a17-98b9-93c0047fb96c","try_again":1703365047.1084266,"try_again_in":86399.99999977}
{"level":"info","ts":1703278647.1084647,"logger":"tls","msg":"finished cleaning storage units"}
{"level":"info","ts":1703278710.5418673,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34276","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.137580343,"size":27514,"status":200,"resp_headers":{"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"]}}
{"level":"info","ts":1703278710.5800052,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34396","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.034518561,"size":27514,"status":200,"resp_headers":{"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"]}}
{"level":"info","ts":1703278710.5829577,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34380","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.037392477,"size":27514,"status":200,"resp_headers":{"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"]}}
{"level":"info","ts":1703278710.5847366,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34346","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.039129869,"size":27514,"status":200,"resp_headers":{"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"]}}
{"level":"info","ts":1703278710.5867207,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34694","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.041195794,"size":27514,"status":200,"resp_headers":{"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"]}}
{"level":"info","ts":1703278710.588303,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34678","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.042501492,"size":27514,"status":200,"resp_headers":{"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"]}}
{"level":"info","ts":1703278710.5899355,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34670","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.044166405,"size":27514,"status":200,"resp_headers":{"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"]}}
{"level":"info","ts":1703278710.5922215,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34320","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.046417094,"size":27514,"status":200,"resp_headers":{"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"]}}
{"level":"info","ts":1703278710.5963607,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34448","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.050532259,"size":27514,"status":200,"resp_headers":{"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"]}}
{"level":"info","ts":1703278710.596912,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34336","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.052590114,"size":27514,"status":200,"resp_headers":{"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"]}}
{"level":"info","ts":1703278710.5971634,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34730","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.052131965,"size":27514,"status":200,"resp_headers":{"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"]}}
{"level":"info","ts":1703278710.597541,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34472","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.053017848,"size":27514,"status":200,"resp_headers":{"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"]}}
{"level":"info","ts":1703278710.597548,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34410","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.052555975,"size":27514,"status":200,"resp_headers":{"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[]}}
{"level":"info","ts":1703278710.5976424,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34760","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.052591155,"size":27514,"status":200,"resp_headers":{"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"]}}
{"level":"info","ts":1703278710.5977588,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34302","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.053335849,"size":27514,"status":200,"resp_headers":{"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"]}}
{"level":"info","ts":1703278710.5978084,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34620","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.053401989,"size":27514,"status":200,"resp_headers":{"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"]}}
{"level":"info","ts":1703278710.5982041,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34578","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.05358116,"size":27514,"status":200,"resp_headers":{"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"]}}
{"level":"info","ts":1703278710.598243,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34370","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.05391941,"size":27514,"status":200,"resp_headers":{"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[]}}
{"level":"info","ts":1703278710.598253,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34752","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.053312111,"size":27514,"status":200,"resp_headers":{"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"]}}
{"level":"info","ts":1703278710.5983367,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34450","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.053632762,"size":27514,"status":200,"resp_headers":{"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"]}}
{"level":"info","ts":1703278710.5988786,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34288","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.054835668,"size":27514,"status":200,"resp_headers":{"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"]}}
{"level":"info","ts":1703278710.5990226,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34466","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.054490132,"size":27514,"status":200,"resp_headers":{"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"]}}
{"level":"info","ts":1703278710.599067,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34546","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.054211583,"size":27514,"status":200,"resp_headers":{"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"]}}
{"level":"info","ts":1703278710.5992312,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34744","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.054372868,"size":27514,"status":200,"resp_headers":{"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"]}}
{"level":"info","ts":1703278710.5992477,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34308","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.054861109,"size":27514,"status":200,"resp_headers":{"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"]}}
{"level":"info","ts":1703278710.5992756,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34572","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.0531472,"size":27514,"status":200,"resp_headers":{"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"]}}
{"level":"info","ts":1703278710.5993197,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34710","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.05320893,"size":27514,"status":200,"resp_headers":{"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"]}}
{"level":"info","ts":1703278710.5993226,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34496","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.05383485,"size":27514,"status":200,"resp_headers":{"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"]}}
{"level":"info","ts":1703278710.599455,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34528","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"Accept":["*/*"],"User-Agent":["ApacheBench/2.3"]}},"bytes_read":0,"user_id":"","duration":0.054962966,"size":27514,"status":200,"resp_headers":{"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"]}}
{"level":"info","ts":1703278710.599462,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34424","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.053090641,"size":27514,"status":200,"resp_headers":{"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"]}}
{"level":"info","ts":1703278710.5994709,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34724","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.053420904,"size":27514,"status":200,"resp_headers":{"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"]}}
{"level":"info","ts":1703278710.5995014,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34514","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.054798648,"size":27514,"status":200,"resp_headers":{"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"]}}
{"level":"info","ts":1703278710.6000152,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34652","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.055450844,"size":27514,"status":200,"resp_headers":{"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"]}}
{"level":"info","ts":1703278710.6000674,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34606","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.055660284,"size":27514,"status":200,"resp_headers":{"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"]}}
{"level":"info","ts":1703278710.6000736,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34590","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.055221305,"size":27514,"status":200,"resp_headers":{"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[]}}
{"level":"info","ts":1703278710.6003792,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34438","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.05405191,"size":27514,"status":200,"resp_headers":{"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"]}}
{"level":"info","ts":1703278710.6003947,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34706","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.054883808,"size":27514,"status":200,"resp_headers":{"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"]}}
{"level":"info","ts":1703278710.6006112,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34476","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.054089621,"size":27514,"status":200,"resp_headers":{"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"]}}
{"level":"info","ts":1703278710.6006556,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34544","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.055783055,"size":27514,"status":200,"resp_headers":{"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"]}}
{"level":"info","ts":1703278710.600694,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34362","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.056397008,"size":27514,"status":200,"resp_headers":{"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"]}}
{"level":"info","ts":1703278710.6006925,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34808","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.021929652,"size":27514,"status":200,"resp_headers":{"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"]}}
{"level":"info","ts":1703278710.600713,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34784","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.021931883,"size":27514,"status":200,"resp_headers":{"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"]}}
{"level":"info","ts":1703278710.6007485,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34848","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.021955732,"size":27514,"status":200,"resp_headers":{"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"]}}
{"level":"info","ts":1703278710.60079,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34774","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.02201847,"size":27514,"status":200,"resp_headers":{"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"]}}
{"level":"info","ts":1703278710.600825,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34840","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.022006786,"size":27514,"status":200,"resp_headers":{"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"]}}
{"level":"info","ts":1703278710.6011488,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34798","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.022285025,"size":27514,"status":200,"resp_headers":{"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"]}}
{"level":"info","ts":1703278710.601734,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34878","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.022701753,"size":27514,"status":200,"resp_headers":{"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"]}}
{"level":"info","ts":1703278710.6017647,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34920","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.022681354,"size":27514,"status":200,"resp_headers":{"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"]}}
{"level":"info","ts":1703278710.6018746,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34906","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"Accept":["*/*"],"User-Agent":["ApacheBench/2.3"]}},"bytes_read":0,"user_id":"","duration":0.022851334,"size":27514,"status":200,"resp_headers":{"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"]}}
{"level":"info","ts":1703278710.601926,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34930","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.022837165,"size":27514,"status":200,"resp_headers":{"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"]}}
{"level":"info","ts":1703278710.6020398,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34564","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.057159439,"size":27514,"status":200,"resp_headers":{"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"]}}
{"level":"info","ts":1703278710.6020498,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34876","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.02302111,"size":27514,"status":200,"resp_headers":{"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"]}}
{"level":"info","ts":1703278710.6023126,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35000","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.023119063,"size":27514,"status":200,"resp_headers":{"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"]}}
{"level":"info","ts":1703278710.6023335,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34300","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.058024362,"size":27514,"status":200,"resp_headers":{"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"]}}
{"level":"info","ts":1703278710.6023352,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34488","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.055891685,"size":27514,"status":200,"resp_headers":{"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"]}}
{"level":"info","ts":1703278710.602359,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34828","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.023444957,"size":27514,"status":200,"resp_headers":{"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"]}}
{"level":"info","ts":1703278710.6023803,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34662","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"Accept":["*/*"],"User-Agent":["ApacheBench/2.3"]}},"bytes_read":0,"user_id":"","duration":0.056901968,"size":27514,"status":200,"resp_headers":{"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"]}}
{"level":"info","ts":1703278710.6027055,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34884","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.023720455,"size":27514,"status":200,"resp_headers":{"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"]}}
{"level":"info","ts":1703278710.6028612,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34548","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.058334233,"size":27514,"status":200,"resp_headers":{"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"]}}
{"level":"info","ts":1703278710.6028814,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34512","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.056406775,"size":27514,"status":200,"resp_headers":{"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"]}}
{"level":"info","ts":1703278710.602912,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34946","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.023767663,"size":27514,"status":200,"resp_headers":{"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"]}}
{"level":"info","ts":1703278710.6032517,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34980","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.023964471,"size":27514,"status":200,"resp_headers":{"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"]}}
{"level":"info","ts":1703278710.6033928,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34864","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.024396463,"size":27514,"status":200,"resp_headers":{"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"]}}
{"level":"info","ts":1703278710.6035028,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34898","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.024419416,"size":27514,"status":200,"resp_headers":{"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"]}}
{"level":"info","ts":1703278710.6035457,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35080","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.024092112,"size":27514,"status":200,"resp_headers":{"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"]}}
{"level":"info","ts":1703278710.603793,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35046","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.024444522,"size":27514,"status":200,"resp_headers":{"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"]}}
{"level":"info","ts":1703278710.6039145,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35134","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.024452005,"size":27514,"status":200,"resp_headers":{"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"]}}
{"level":"info","ts":1703278710.6040564,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35070","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.024599411,"size":27514,"status":200,"resp_headers":{"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"]}}
{"level":"info","ts":1703278710.6041012,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34824","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.025129942,"size":27514,"status":200,"resp_headers":{"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"]}}
{"level":"info","ts":1703278710.6042073,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34932","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.025066573,"size":27514,"status":200,"resp_headers":{"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"]}}
{"level":"info","ts":1703278710.60431,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35104","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.024867585,"size":27514,"status":200,"resp_headers":{"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"]}}
{"level":"info","ts":1703278710.6043496,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35092","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.02489229,"size":27514,"status":200,"resp_headers":{"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"]}}
{"level":"info","ts":1703278710.6044285,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35136","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.024760461,"size":27514,"status":200,"resp_headers":{"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"]}}
{"level":"info","ts":1703278710.6044564,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35022","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.024683048,"size":27514,"status":200,"resp_headers":{"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"]}}
{"level":"info","ts":1703278710.6048126,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35214","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"Accept":["*/*"],"User-Agent":["ApacheBench/2.3"]}},"bytes_read":0,"user_id":"","duration":0.025002209,"size":27514,"status":200,"resp_headers":{"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"]}}
{"level":"info","ts":1703278710.605104,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34956","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.025888098,"size":27514,"status":200,"resp_headers":{"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"]}}
{"level":"info","ts":1703278710.6053603,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34968","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.026108034,"size":27514,"status":200,"resp_headers":{"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"]}}
{"level":"info","ts":1703278710.6053681,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35180","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.025167848,"size":27514,"status":200,"resp_headers":{"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[]}}
{"level":"info","ts":1703278710.6054304,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34882","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.026442364,"size":27514,"status":200,"resp_headers":{"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"]}}
{"level":"info","ts":1703278710.6054323,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34950","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.026188972,"size":27514,"status":200,"resp_headers":{"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"]}}
{"level":"info","ts":1703278710.6058016,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35012","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"Accept":["*/*"],"User-Agent":["ApacheBench/2.3"]}},"bytes_read":0,"user_id":"","duration":0.026507888,"size":27514,"status":200,"resp_headers":{"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"]}}
{"level":"info","ts":1703278710.6058059,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34506","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.059272515,"size":27514,"status":200,"resp_headers":{"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[]}}
{"level":"info","ts":1703278710.6059926,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35186","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"Accept":["*/*"],"User-Agent":["ApacheBench/2.3"]}},"bytes_read":0,"user_id":"","duration":0.026077578,"size":27514,"status":200,"resp_headers":{"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"]}}
{"level":"info","ts":1703278710.606124,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35024","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.02679778,"size":27514,"status":200,"resp_headers":{"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[]}}
{"level":"info","ts":1703278710.6061711,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35120","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.026701839,"size":27514,"status":200,"resp_headers":{"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"]}}
{"level":"info","ts":1703278710.6062176,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35034","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.0267646,"size":27514,"status":200,"resp_headers":{"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[]}}
{"level":"info","ts":1703278710.6062338,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35144","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.026756229,"size":27514,"status":200,"resp_headers":{"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"]}}
{"level":"info","ts":1703278710.6062338,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34952","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"Accept":["*/*"],"User-Agent":["ApacheBench/2.3"]}},"bytes_read":0,"user_id":"","duration":0.026933102,"size":27514,"status":200,"resp_headers":{"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"]}}
{"level":"info","ts":1703278710.6062644,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34996","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.02696234,"size":27514,"status":200,"resp_headers":{"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"]}}
{"level":"info","ts":1703278710.606281,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"34916","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.027166443,"size":27514,"status":200,"resp_headers":{"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"]}}
{"level":"info","ts":1703278710.6063015,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35198","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.026350817,"size":27514,"status":200,"resp_headers":{"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[]}}
{"level":"info","ts":1703278710.6065323,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35242","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.021616301,"size":27514,"status":200,"resp_headers":{"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"]}}
{"level":"info","ts":1703278710.6067188,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35160","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.026759299,"size":27514,"status":200,"resp_headers":{"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"]}}
{"level":"info","ts":1703278710.606723,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35202","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.026680872,"size":27514,"status":200,"resp_headers":{"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"]}}
{"level":"info","ts":1703278710.606889,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35168","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"Accept":["*/*"],"User-Agent":["ApacheBench/2.3"]}},"bytes_read":0,"user_id":"","duration":0.026900403,"size":27514,"status":200,"resp_headers":{"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"]}}
{"level":"info","ts":1703278710.606913,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35228","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.0260876,"size":27514,"status":200,"resp_headers":{"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"]}}
{"level":"info","ts":1703278710.6070192,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35232","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.023574232,"size":27514,"status":200,"resp_headers":{"Cache-Control":["private, must-revalidate"],"Date":["Fri, 22 Dec 2023 20:58:30 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.0"],"Content-Type":["text/html; charset=UTF-8"]}}
mo7zayed commented 8 months ago

@nunomaduro Sometimes when I start the server randomly using php artisan octane:start --server=frankenphp --log-level=debug

{"level":"info","ts":1703279449.4357417,"msg":"using provided configuration","config_file":"/home/mo7zayed/Desktop/work/mo7zayed/habd/frankenphp-issue/vendor/laravel/octane/src/Commands/stubs/Caddyfile","config_adapter":""}
{"level":"info","ts":1703279449.4369097,"logger":"admin","msg":"admin endpoint started","address":"localhost:2019","enforce_origin":false,"origins":["//localhost:2019","//[::1]:2019","//127.0.0.1:2019"]}
{"level":"info","ts":1703279449.4370534,"logger":"tls.cache.maintenance","msg":"started background certificate maintenance","cache":"0xc0006a0280"}

Another log

{"level":"info","ts":1703279611.1767733,"msg":"using provided configuration","config_file":"/home/mo7zayed/Desktop/work/mo7zayed/habd/frankenphp-issue/vendor/laravel/octane/src/Commands/stubs/Caddyfile","config_adapter":""}
{"level":"info","ts":1703279611.1779628,"logger":"admin","msg":"admin endpoint started","address":"localhost:2019","enforce_origin":false,"origins":["//127.0.0.1:2019","//localhost:2019","//[::1]:2019"]}
{"level":"info","ts":1703279611.1781075,"logger":"tls.cache.maintenance","msg":"started background certificate maintenance","cache":"0xc00006bf80"}
{"level":"info","ts":1703279611.1782486,"logger":"http.log","msg":"server running","name":"srv0","protocols":["h1","h2","h3"]}
{"level":"warn","ts":1703279611.180945,"logger":"tls","msg":"storage cleaning happened too recently; skipping for now","storage":"FileStorage:/home/mo7zayed/.local/share/caddy","instance":"399ac890-5e06-4a17-98b9-93c0047fb96c","try_again":1703366011.1809442,"try_again_in":86399.99999979}
{"level":"info","ts":1703279611.181011,"logger":"tls","msg":"finished cleaning storage units"}
nunomaduro commented 8 months ago

cc @dunglas

dunglas commented 8 months ago

Thanks for the reproducer. I'll be on vacation during the next 2 weeks, but I'll try to reproduce when I'll be back.

I assume that you're using Linux, right?

To investigate deeper we have to:

  1. Identify if it's FrankenPHP itself (likely) or just the Octane wrapper that crashes. To do so, it would be nice if Octane could report crashes of the started process (and the status code) @nunomaduro
  2. If it's FrankenPHP, the next step will be to use a debug build (https://frankenphp.dev/docs/static/, and set DEBUG_SYMBOLS=1) and run it using GDB to get a back trace
foremtehan commented 8 months ago

same happened to me:

image

dunglas commented 8 months ago

Do you know if the server stopped (crashed) or if it is still running?

foremtehan commented 8 months ago

Yeah, it has crashed and no longer running

ariaieboy commented 8 months ago

I can confirm this issue tested on laravel sail + fresh laravel install using windows wsl2 and local PHP installation.

abishekrsrikaanth commented 8 months ago

I am on Mac Sonomo 14.2 and in my case the octane server crashes frequently with FrankenPHP and when code changes in the product, and when --watch is used to run the octane server. Here is the debug log

Here is the command line I run the server

php artisan octane:start --port=8011 --log-level=debug --watch --server=frankenphp
INFO  Application change detected. Restarting workers…
{"level":"info","ts":1703875073.0187871,"logger":"admin.api","msg":"received request","method":"GET","host":"localhost:2030","uri":"/config/apps/frankenphp","remote_ip":"127.0.0.1","remote_port":"63873","headers":{"User-Agent":["GuzzleHttp/7"]}}
{"level":"info","ts":1703875073.020648,"logger":"admin.api","msg":"received request","method":"PATCH","host":"localhost:2030","uri":"/config/apps/frankenphp","remote_ip":"127.0.0.1","remote_port":"63875","headers":{"Cache-Control":["must-revalidate"],"Content-Length":["120"],"Content-Type":["application/json"],"User-Agent":["GuzzleHttp/7"]}}
{"level":"info","ts":1703875073.0238662,"logger":"admin","msg":"admin endpoint started","address":"localhost:2030","enforce_origin":false,"origins":["//127.0.0.1:2030","//localhost:2030","//[::1]:2030"]}
{"level":"info","ts":1703875073.024548,"logger":"http.log","msg":"server running","name":"srv0","protocols":["h1","h2","h3"]}
{"level":"info","ts":1703875073.0826108,"msg":"FrankenPHP started 🐘","php_version":"8.3.1"}
{"level":"info","ts":1703875073.082638,"logger":"http","msg":"servers shutting down with eternal grace period"}
{"level":"info","ts":1703875073.082677,"msg":"FrankenPHP stopped 🐘"}
{"level":"info","ts":1703875073.0829198,"msg":"autosaved config (load with --resume flag)","file":"/Users/abisheksrikaanth/Library/Application Support/Caddy/autosave.json"}
{"level":"info","ts":1703875073.111255,"logger":"admin","msg":"stopped previous server","address":"localhost:2030"}

INFO  Application change detected. Restarting workers…
{"level":"info","ts":1703875092.738181,"logger":"admin.api","msg":"received request","method":"GET","host":"localhost:2030","uri":"/config/apps/frankenphp","remote_ip":"127.0.0.1","remote_port":"63878","headers":{"User-Agent":["GuzzleHttp/7"]}}
{"level":"info","ts":1703875092.745216,"logger":"admin.api","msg":"received request","method":"PATCH","host":"localhost:2030","uri":"/config/apps/frankenphp","remote_ip":"127.0.0.1","remote_port":"63880","headers":{"Cache-Control":["must-revalidate"],"Content-Length":["120"],"Content-Type":["application/json"],"User-Agent":["GuzzleHttp/7"]}}
{"level":"info","ts":1703875092.747081,"logger":"admin","msg":"admin endpoint started","address":"localhost:2030","enforce_origin":false,"origins":["//[::1]:2030","//127.0.0.1:2030","//localhost:2030"]}
mo7zayed commented 7 months ago

@nunomaduro @dunglas Any updates about this issue?

dunglas commented 7 months ago

This will likely be fixed in the latest patch release of PHP.

LauJosefsen commented 7 months ago

This will likely be fixed in the latest patch release of PHP.

When you say latest and likely in the same sentence, does that mean a future release or an already released patch? If already released, what patch should I test with?

driesvints commented 7 months ago

@dunglas did you mean v8.2.15? Because that's out now.

RVxLab commented 7 months ago

I am on Mac Sonomo 14.2 and in my case the octane server crashes frequently with FrankenPHP and when code changes in the product, and when --watch is used to run the octane server. Here is the debug log

Here is the command line I run the server

php artisan octane:start --port=8011 --log-level=debug --watch --server=frankenphp
INFO  Application change detected. Restarting workers…
{"level":"info","ts":1703875073.0187871,"logger":"admin.api","msg":"received request","method":"GET","host":"localhost:2030","uri":"/config/apps/frankenphp","remote_ip":"127.0.0.1","remote_port":"63873","headers":{"User-Agent":["GuzzleHttp/7"]}}
{"level":"info","ts":1703875073.020648,"logger":"admin.api","msg":"received request","method":"PATCH","host":"localhost:2030","uri":"/config/apps/frankenphp","remote_ip":"127.0.0.1","remote_port":"63875","headers":{"Cache-Control":["must-revalidate"],"Content-Length":["120"],"Content-Type":["application/json"],"User-Agent":["GuzzleHttp/7"]}}
{"level":"info","ts":1703875073.0238662,"logger":"admin","msg":"admin endpoint started","address":"localhost:2030","enforce_origin":false,"origins":["//127.0.0.1:2030","//localhost:2030","//[::1]:2030"]}
{"level":"info","ts":1703875073.024548,"logger":"http.log","msg":"server running","name":"srv0","protocols":["h1","h2","h3"]}
{"level":"info","ts":1703875073.0826108,"msg":"FrankenPHP started 🐘","php_version":"8.3.1"}
{"level":"info","ts":1703875073.082638,"logger":"http","msg":"servers shutting down with eternal grace period"}
{"level":"info","ts":1703875073.082677,"msg":"FrankenPHP stopped 🐘"}
{"level":"info","ts":1703875073.0829198,"msg":"autosaved config (load with --resume flag)","file":"/Users/abisheksrikaanth/Library/Application Support/Caddy/autosave.json"}
{"level":"info","ts":1703875073.111255,"logger":"admin","msg":"stopped previous server","address":"localhost:2030"}

INFO  Application change detected. Restarting workers…
{"level":"info","ts":1703875092.738181,"logger":"admin.api","msg":"received request","method":"GET","host":"localhost:2030","uri":"/config/apps/frankenphp","remote_ip":"127.0.0.1","remote_port":"63878","headers":{"User-Agent":["GuzzleHttp/7"]}}
{"level":"info","ts":1703875092.745216,"logger":"admin.api","msg":"received request","method":"PATCH","host":"localhost:2030","uri":"/config/apps/frankenphp","remote_ip":"127.0.0.1","remote_port":"63880","headers":{"Cache-Control":["must-revalidate"],"Content-Length":["120"],"Content-Type":["application/json"],"User-Agent":["GuzzleHttp/7"]}}
{"level":"info","ts":1703875092.747081,"logger":"admin","msg":"admin endpoint started","address":"localhost:2030","enforce_origin":false,"origins":["//[::1]:2030","//127.0.0.1:2030","//localhost:2030"]}

Can you see this happening on 8.3.2? I can see some of the same fixes in 8.2.15 and 8.3.2.

cmizzi commented 7 months ago

Tested on PHP 8.2.15 and 8.3.2, and this issue still exists. I also did the test with a really simple FrankenPHP code (without Laravel), and there's no issue with ab or other HTTP benchmark tools. It looks related to the Laravel Octane bridge with FrankenPHP.

<?php

ignore_user_abort(true);

$handler = static function () {
    echo "Hello, world!";
};

$running = true;

while ($running) {
    $running = \frankenphp_handle_request($handler);
    gc_collect_cycles();
}
driesvints commented 7 months ago

@dunglas ^

dunglas commented 7 months ago

The patches are these:

nogamenofun98 commented 7 months ago

Hi @dunglas,

I noticed frankenphp had release version 1.1.0 and php also had release 8.2.15, both included the respective PR commit. Does this means this issue is resolved now or need to wait laravel octane to update also?

dunglas commented 7 months ago

The PHP patch hasn't been released yet (it will be included in the next patch version) but the fix included in FrankenPHP 1.1 is maybe enough. Octane should upgrade automatically to FrankenPHP 1.1. The easier way to find out if this is fixed is to try 😅

binaryfire commented 7 months ago

You'll need to delete your existing binary and re-start Octane to download the latest version. The current minimum version is pinned at 1.0.2:

https://github.com/laravel/octane/blob/8f9d0da559ba4366fecc5c106d1298abe6773396/src/Commands/Concerns/InstallsFrankenPhpDependencies.php#L22

nogamenofun98 commented 7 months ago
% ab -n 1000 -c 10 http://127.0.0.1:8000/
This is ApacheBench, Version 2.3 <$Revision: 1903618 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 127.0.0.1 (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests

Server Software:        Caddy
Server Hostname:        127.0.0.1
Server Port:            8000

Document Path:          /
Document Length:        1638 bytes

Concurrency Level:      10
Time taken for tests:   8.368 seconds
Complete requests:      1000
Failed requests:        0
Total transferred:      2769000 bytes
HTML transferred:       1638000 bytes
Requests per second:    119.50 [#/sec] (mean)
Time per request:       83.681 [ms] (mean)
Time per request:       8.368 [ms] (mean, across all concurrent requests)
Transfer rate:          323.15 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.2      0       4
Processing:     6   73  89.3     38    1140
Waiting:        6   73  89.3     38    1139
Total:          6   73  89.3     38    1140

Percentage of the requests served within a certain time (ms)
  50%     38
  66%     57
  75%     76
  80%    111
  90%    193
  95%    279
  98%    347
  99%    396
 100%   1140 (longest request)

seems like is working? I didnt try out before i upgrade to frankenphp 1.1.0 and php8.2 tho

mo7zayed commented 7 months ago

@binaryfire @nogamenofun98 the issue still there when running with high concurrency ab -n 1000 -c 100 http://127.0.0.1:8000/

frankenphp -v

FrankenPHP v1.1.0 PHP 8.3.2 Caddy v2.7.6 h1:w0NymbG2m9PcvKWsrXO6EEkY9Ru4FJK8uQbYcev1p3A=

php artisan octane:start --server=frankenphp --log-level=debug

mo7zayed@mo7zayed:~/Desktop/work/mo7zayed/habd/frankenphp-issue$ php artisan octane:start --server=frankenphp --log-level=debug
{"level":"info","ts":1707319244.5531957,"msg":"using provided configuration","config_file":"/home/mo7zayed/Desktop/work/mo7zayed/habd/frankenphp-issue/vendor/laravel/octane/src/Commands/stubs/Caddyfile","config_adapter":""}
{"level":"info","ts":1707319244.5544229,"logger":"admin","msg":"admin endpoint started","address":"localhost:2019","enforce_origin":false,"origins":["//localhost:2019","//[::1]:2019","//127.0.0.1:2019"]}
{"level":"info","ts":1707319244.554588,"logger":"tls.cache.maintenance","msg":"started background certificate maintenance","cache":"0xc000135b00"}
{"level":"info","ts":1707319244.6014946,"msg":"FrankenPHP started 🐘","php_version":"8.3.2"}
{"level":"info","ts":1707319244.6016219,"logger":"http.log","msg":"server running","name":"srv0","protocols":["h1","h2","h3"]}
{"level":"info","ts":1707319244.6017444,"msg":"autosaved config (load with --resume flag)","file":"/home/mo7zayed/.config/caddy/autosave.json"}
{"level":"info","ts":1707319244.601749,"msg":"serving initial configuration"}
{"level":"warn","ts":1707319244.604494,"logger":"tls","msg":"storage cleaning happened too recently; skipping for now","storage":"FileStorage:/home/mo7zayed/.local/share/caddy","instance":"399ac890-5e06-4a17-98b9-93c0047fb96c","try_again":1707405644.6044931,"try_again_in":86399.999999691}
{"level":"info","ts":1707319244.6045303,"logger":"tls","msg":"finished cleaning storage units"}
{"level":"info","ts":1707319249.5749884,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35480","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.135632514,"size":27514,"status":200,"resp_headers":{"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.2"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Wed, 07 Feb 2024 15:20:49 GMT"],"Pragma":["no-cache"]}}
{"level":"info","ts":1707319249.619355,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35862","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.040484327,"size":27514,"status":200,"resp_headers":{"Cache-Control":["private, must-revalidate"],"Date":["Wed, 07 Feb 2024 15:20:49 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.2"],"Content-Type":["text/html; charset=UTF-8"]}}
{"level":"info","ts":1707319249.6216817,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35854","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.042802276,"size":27514,"status":200,"resp_headers":{"Cache-Control":["private, must-revalidate"],"Date":["Wed, 07 Feb 2024 15:20:49 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.2"],"Content-Type":["text/html; charset=UTF-8"]}}
{"level":"info","ts":1707319249.6238704,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35832","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.0449992,"size":27514,"status":200,"resp_headers":{"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.2"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Wed, 07 Feb 2024 15:20:49 GMT"],"Pragma":["no-cache"],"Expires":["-1"]}}
{"level":"info","ts":1707319249.625515,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35850","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.046624696,"size":27514,"status":200,"resp_headers":{"Cache-Control":["private, must-revalidate"],"Date":["Wed, 07 Feb 2024 15:20:49 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.2"],"Content-Type":["text/html; charset=UTF-8"]}}
{"level":"info","ts":1707319249.6281385,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35874","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"Accept":["*/*"],"User-Agent":["ApacheBench/2.3"]}},"bytes_read":0,"user_id":"","duration":0.049255577,"size":27514,"status":200,"resp_headers":{"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.2"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Wed, 07 Feb 2024 15:20:49 GMT"],"Pragma":["no-cache"],"Expires":["-1"]}}
{"level":"info","ts":1707319249.6336591,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35712","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.055294461,"size":27514,"status":200,"resp_headers":{"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Wed, 07 Feb 2024 15:20:49 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.2"]}}
{"level":"info","ts":1707319249.6337557,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35648","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.056218609,"size":27514,"status":200,"resp_headers":{"Date":["Wed, 07 Feb 2024 15:20:49 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.2"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"]}}
{"level":"info","ts":1707319249.6337779,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35598","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.05582133,"size":27514,"status":200,"resp_headers":{"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.2"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Wed, 07 Feb 2024 15:20:49 GMT"],"Pragma":["no-cache"]}}
{"level":"info","ts":1707319249.6359093,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35912","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.058125784,"size":27514,"status":200,"resp_headers":{"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.2"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Wed, 07 Feb 2024 15:20:49 GMT"]}}
{"level":"info","ts":1707319249.6360104,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35780","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.057115792,"size":27514,"status":200,"resp_headers":{"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.2"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Wed, 07 Feb 2024 15:20:49 GMT"],"Pragma":["no-cache"],"Expires":["-1"]}}
{"level":"info","ts":1707319249.6362917,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35704","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.058490671,"size":27514,"status":200,"resp_headers":{"Date":["Wed, 07 Feb 2024 15:20:49 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.2"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"]}}
{"level":"info","ts":1707319249.636529,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35816","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.058823379,"size":27514,"status":200,"resp_headers":{"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.2"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Wed, 07 Feb 2024 15:20:49 GMT"],"Pragma":["no-cache"],"Expires":["-1"]}}
{"level":"info","ts":1707319249.636589,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35792","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.058264716,"size":27514,"status":200,"resp_headers":{"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.2"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Wed, 07 Feb 2024 15:20:49 GMT"],"Pragma":["no-cache"]}}
{"level":"info","ts":1707319249.6366494,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35918","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.058939208,"size":27514,"status":200,"resp_headers":{"Server":["Caddy"],"X-Powered-By":["PHP/8.3.2"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Wed, 07 Feb 2024 15:20:49 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[]}}
{"level":"info","ts":1707319249.6368454,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35794","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"Accept":["*/*"],"User-Agent":["ApacheBench/2.3"]}},"bytes_read":0,"user_id":"","duration":0.058600462,"size":27514,"status":200,"resp_headers":{"X-Powered-By":["PHP/8.3.2"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Wed, 07 Feb 2024 15:20:49 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"]}}
{"level":"info","ts":1707319249.636907,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35586","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"Accept":["*/*"],"User-Agent":["ApacheBench/2.3"]}},"bytes_read":0,"user_id":"","duration":0.059374452,"size":27514,"status":200,"resp_headers":{"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.2"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Wed, 07 Feb 2024 15:20:49 GMT"],"Pragma":["no-cache"],"Expires":["-1"]}}
{"level":"info","ts":1707319249.6369631,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35564","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.059686996,"size":27514,"status":200,"resp_headers":{"X-Powered-By":["PHP/8.3.2"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Wed, 07 Feb 2024 15:20:49 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"]}}
{"level":"info","ts":1707319249.6372929,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35904","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.059141035,"size":27514,"status":200,"resp_headers":{"Cache-Control":["private, must-revalidate"],"Date":["Wed, 07 Feb 2024 15:20:49 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.2"],"Content-Type":["text/html; charset=UTF-8"]}}
{"level":"info","ts":1707319249.638458,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35632","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.060936682,"size":27514,"status":200,"resp_headers":{"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Wed, 07 Feb 2024 15:20:49 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.2"]}}
{"level":"info","ts":1707319249.638476,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35808","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.060681099,"size":27514,"status":200,"resp_headers":{"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.2"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Wed, 07 Feb 2024 15:20:49 GMT"],"Pragma":["no-cache"]}}
{"level":"info","ts":1707319249.6384945,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35506","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.061327262,"size":27514,"status":200,"resp_headers":{"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Wed, 07 Feb 2024 15:20:49 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.2"]}}
{"level":"info","ts":1707319249.6384957,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35664","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.060114824,"size":27514,"status":200,"resp_headers":{"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Wed, 07 Feb 2024 15:20:49 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.2"]}}
{"level":"info","ts":1707319249.6385448,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35926","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.060798612,"size":27514,"status":200,"resp_headers":{"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.2"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Wed, 07 Feb 2024 15:20:49 GMT"]}}
{"level":"info","ts":1707319249.6385489,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35738","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.061030575,"size":27514,"status":200,"resp_headers":{"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.2"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Wed, 07 Feb 2024 15:20:49 GMT"],"Pragma":["no-cache"],"Expires":["-1"]}}
{"level":"info","ts":1707319249.6385581,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35522","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.061386924,"size":27514,"status":200,"resp_headers":{"X-Powered-By":["PHP/8.3.2"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Wed, 07 Feb 2024 15:20:49 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"]}}
{"level":"info","ts":1707319249.6385934,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35740","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.061016102,"size":27514,"status":200,"resp_headers":{"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.2"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Wed, 07 Feb 2024 15:20:49 GMT"],"Pragma":["no-cache"]}}
{"level":"info","ts":1707319249.6385915,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35646","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"Accept":["*/*"],"User-Agent":["ApacheBench/2.3"]}},"bytes_read":0,"user_id":"","duration":0.060946704,"size":27514,"status":200,"resp_headers":{"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.2"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Wed, 07 Feb 2024 15:20:49 GMT"],"Pragma":["no-cache"]}}
{"level":"info","ts":1707319249.6386025,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35658","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.06131577,"size":27514,"status":200,"resp_headers":{"Date":["Wed, 07 Feb 2024 15:20:49 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.2"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"]}}
{"level":"info","ts":1707319249.6387227,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35494","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.061580674,"size":27514,"status":200,"resp_headers":{"X-Powered-By":["PHP/8.3.2"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Wed, 07 Feb 2024 15:20:49 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"]}}
{"level":"info","ts":1707319249.6387908,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35818","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"Accept":["*/*"],"User-Agent":["ApacheBench/2.3"]}},"bytes_read":0,"user_id":"","duration":0.059937917,"size":27514,"status":200,"resp_headers":{"Cache-Control":["private, must-revalidate"],"Date":["Wed, 07 Feb 2024 15:20:49 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.2"],"Content-Type":["text/html; charset=UTF-8"]}}
{"level":"info","ts":1707319249.6389155,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35696","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.060775779,"size":27514,"status":200,"resp_headers":{"Cache-Control":["private, must-revalidate"],"Date":["Wed, 07 Feb 2024 15:20:49 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.2"],"Content-Type":["text/html; charset=UTF-8"]}}
{"level":"info","ts":1707319249.63896,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35520","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.061784968,"size":27514,"status":200,"resp_headers":{"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.2"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Wed, 07 Feb 2024 15:20:49 GMT"],"Pragma":["no-cache"],"Expires":["-1"]}}
{"level":"info","ts":1707319249.6391969,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35604","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"Accept":["*/*"],"User-Agent":["ApacheBench/2.3"]}},"bytes_read":0,"user_id":"","duration":0.06090024,"size":27514,"status":200,"resp_headers":{"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.2"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Wed, 07 Feb 2024 15:20:49 GMT"]}}
{"level":"info","ts":1707319249.6392758,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35496","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.062049696,"size":27514,"status":200,"resp_headers":{"Server":["Caddy"],"X-Powered-By":["PHP/8.3.2"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Wed, 07 Feb 2024 15:20:49 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[]}}
{"level":"info","ts":1707319249.6395855,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35760","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.060607462,"size":27514,"status":200,"resp_headers":{"Date":["Wed, 07 Feb 2024 15:20:49 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.2"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"]}}
{"level":"info","ts":1707319249.6396341,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35754","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.060593694,"size":27514,"status":200,"resp_headers":{"Server":["Caddy"],"X-Powered-By":["PHP/8.3.2"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Wed, 07 Feb 2024 15:20:49 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[]}}
{"level":"info","ts":1707319249.6397827,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35574","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.062558146,"size":27514,"status":200,"resp_headers":{"Cache-Control":["private, must-revalidate"],"Date":["Wed, 07 Feb 2024 15:20:49 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.2"],"Content-Type":["text/html; charset=UTF-8"]}}
{"level":"info","ts":1707319249.6398168,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35746","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.060757556,"size":27514,"status":200,"resp_headers":{"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Wed, 07 Feb 2024 15:20:49 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.2"]}}
{"level":"info","ts":1707319249.6401708,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35618","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.062114074,"size":27514,"status":200,"resp_headers":{"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.2"],"Content-Type":["text/html; charset=UTF-8"],"Cache-Control":["private, must-revalidate"],"Date":["Wed, 07 Feb 2024 15:20:49 GMT"],"Pragma":["no-cache"],"Expires":["-1"]}}
{"level":"info","ts":1707319249.6402214,"logger":"http.log.access.log0","msg":"handled request","request":{"remote_ip":"127.0.0.1","remote_port":"35672","client_ip":"127.0.0.1","proto":"HTTP/1.0","method":"GET","host":"127.0.0.1:8000","uri":"/","headers":{"User-Agent":["ApacheBench/2.3"],"Accept":["*/*"]}},"bytes_read":0,"user_id":"","duration":0.061841638,"size":27514,"status":200,"resp_headers":{"Cache-Control":["private, must-revalidate"],"Date":["Wed, 07 Feb 2024 15:20:49 GMT"],"Pragma":["no-cache"],"Expires":["-1"],"Set-Cookie":[],"Server":["Caddy"],"X-Powered-By":["PHP/8.3.2"],"Content-Type":["text/html; charset=UTF-8"]}}
nogamenofun98 commented 7 months ago

Hi @mo7zayed , sorry I didnt understand that log which part is showing the error? is it as long as it show got http.log.access.log then means got error? i see the log there all status is 200, didnt see got restart octane server also

I also got tried run with high concurrency, got the same log as yours, but the ab command there showing all 1000 request is completed

Orrison commented 7 months ago

@nogamenofun98 I wonder if the log is also displaying what I am seeing.

Octane crashes using FrankenPHP under high load with no error message or anything. The process just stops.

I get this issue without even using stress test software. Just reloading the page over and over again eventually it happens.

dunglas commented 7 months ago

Are you using Linux or Mac?

Orrison commented 7 months ago

Mac, but I could test on Linux in Staging

mo7zayed commented 7 months ago

@nogamenofun98 that's the point the logs looks good but the process crashes.

mo7zayed commented 7 months ago

@dunglas I tried with Linux, and tried with laravel sail docker container

cmizzi commented 7 months ago

Tested on Ubuntu, using Sail.

FrankenPHP v1.1.0 PHP 8.3.2 Caddy v2.7.6 h1:w0NymbG2m9PcvKWsrXO6EEkY9Ru4FJK8uQbYcev1p3A=
> oha -c 1000 -z 30s http://localhost/
Summary:
  Success rate: 100.00%
  Total:    30.0016 secs
  Slowest:  10.4120 secs
  Fastest:  0.0027 secs
  Average:  4.7603 secs
  Requests/sec: 189.5899

  Total data:   77.77 KiB
  Size/request: 14
  Size/sec: 2.59 KiB

Response time histogram:
   0.003 [1]    |
   1.044 [372]  |■■■■
   2.085 [204]  |■■
   3.125 [218]  |■■
   4.166 [193]  |■■
   5.207 [2879] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
   6.248 [1724] |■■■■■■■■■■■■■■■■■■■
   7.289 [6]    |
   8.330 [3]    |
   9.371 [5]    |
  10.412 [83]   |

Response time distribution:
  10.00% in 2.0817 secs
  25.00% in 5.1812 secs
  50.00% in 5.1952 secs
  75.00% in 5.2099 secs
  90.00% in 5.7082 secs
  95.00% in 5.7222 secs
  99.00% in 10.3856 secs
  99.90% in 10.4077 secs
  99.99% in 10.4120 secs

Details (average, fastest, slowest):
  DNS+dialup:   0.0340 secs, 0.0001 secs, 0.1414 secs
  DNS-lookup:   0.0000 secs, 0.0000 secs, 0.0013 secs

Status code distribution:
  [200] 5688 responses

Metrics are slow (that's not the point), but FrankenPHP didn't shut down this time. But, after a second attempt, FrankenPHP stopped and, even after different restarts, could not handle a bit of load (the same command was executed). I successfully ran it once, all other tries were failures). So probably the issue will not be fixed until the PHP patch is released.

> sail logs -f laravel.test
[...]
laravel-octane-laravel.test-1  |   200    GET / ........................................................ 5.00 ms
laravel-octane-laravel.test-1  |   200    GET / ....................................................... 94.48 ms
laravel-octane-laravel.test-1  |   200    GET / ....................................................... 93.40 ms
laravel-octane-laravel.test-1 exited with code 139
Orrison commented 7 months ago

Tested on Ubuntu, using Sail.

FrankenPHP v1.1.0 PHP 8.3.2 Caddy v2.7.6 h1:w0NymbG2m9PcvKWsrXO6EEkY9Ru4FJK8uQbYcev1p3A=
> oha -c 1000 -z 30s http://localhost/
Summary:
  Success rate:   100.00%
  Total:  30.0016 secs
  Slowest:    10.4120 secs
  Fastest:    0.0027 secs
  Average:    4.7603 secs
  Requests/sec:   189.5899

  Total data: 77.77 KiB
  Size/request:   14
  Size/sec:   2.59 KiB

Response time histogram:
   0.003 [1]    |
   1.044 [372]  |■■■■
   2.085 [204]  |■■
   3.125 [218]  |■■
   4.166 [193]  |■■
   5.207 [2879] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
   6.248 [1724] |■■■■■■■■■■■■■■■■■■■
   7.289 [6]    |
   8.330 [3]    |
   9.371 [5]    |
  10.412 [83]   |

Response time distribution:
  10.00% in 2.0817 secs
  25.00% in 5.1812 secs
  50.00% in 5.1952 secs
  75.00% in 5.2099 secs
  90.00% in 5.7082 secs
  95.00% in 5.7222 secs
  99.00% in 10.3856 secs
  99.90% in 10.4077 secs
  99.99% in 10.4120 secs

Details (average, fastest, slowest):
  DNS+dialup: 0.0340 secs, 0.0001 secs, 0.1414 secs
  DNS-lookup: 0.0000 secs, 0.0000 secs, 0.0013 secs

Status code distribution:
  [200] 5688 responses

Metrics are slow (that's not the point), but FrankenPHP didn't shut down this time. But, after a second attempt, FrankenPHP stopped and, even after different restarts, could not handle a bit of load (the same command was executed). I successfully ran it once, all other tries were failures). So probably the issue will not be fixed until the PHP patch is released.

> sail logs -f laravel.test
[...]
laravel-octane-laravel.test-1  |   200    GET / ........................................................ 5.00 ms
laravel-octane-laravel.test-1  |   200    GET / ....................................................... 94.48 ms
laravel-octane-laravel.test-1  |   200    GET / ....................................................... 93.40 ms
laravel-octane-laravel.test-1 exited with code 139

Which patch is that?

cmizzi commented 7 months ago

@Orrison https://github.com/laravel/octane/issues/791#issuecomment-1926425124 (not sure if you were referring to this).

dunglas commented 6 months ago

Could this be related to this issue? https://github.com/dunglas/frankenphp/issues/576#issuecomment-1939376657

Orrison commented 6 months ago

Could this be related to this issue? dunglas/frankenphp#576 (comment)

Perhaps, I am using Laravel and it does happen as I spam through pages

Orrison commented 6 months ago

@Orrison #791 (comment) (not sure if you were referring to this).

Possibly, I was referring to "So probably the issue will not be fixed until the PHP patch is released." in your last message. As I had thought, the patch you mentioned https://github.com/laravel/octane/issues/791#issuecomment-1926425124 was fixed, and I was using it. But perhaps not.

nogamenofun98 commented 6 months ago

Hi @mo7zayed @Orrison, ohh okay understand now, but from my macos test, with php 8.2.15 to run artisan command and FrankenPHP 1.1.0 PHP 8.3.2 Caddy v2.7.6 h1:w0NymbG2m9PcvKWsrXO6EEkY9Ru4FJK8uQbYcev1p3A=

My octane process didnt exit after run ab -n 1000 -c 100 http://127.0.0.1:8000/ / ab -n 1000 -c 1000 http://127.0.0.1:8000/ / ab -n 1000 -c 10000 http://127.0.0.1:8000/

not sure what is the difference here.

nogamenofun98 commented 6 months ago

ok i tested in server environment, frankenphp 1.1.0, with php 8.3.3, using jmeter, 5000 threads within 60 seconds and it crash also

dunglas commented 6 months ago

@nogamenofun98 can you use GDB to get a stack trace please?

dunglas commented 6 months ago

I cloned the repo and ran the ab command several times on Mac but got no crash. Does anyone have a way to reproduce? Is it a Linux-only bug?

mo7zayed commented 6 months ago

@dunglas it's crashing on Linux and when using laravel sail, Can you try with laravel sail since you are on mac?

LauJosefsen commented 6 months ago

I cloned the repo and ran the ab command several times on Mac but got no crash. Does anyone have a way to reproduce? Is it a Linux-only bug?

I've only tested FrankenPHP on Linux (AMD64) in a docker swarm setup, would you be interested in a minimal docker-compose or swarm setup? If so I can try to throw something together, if I can still reproduce the issue.

dunglas commented 6 months ago

I just tried with fresh installs of Sail (8.3 template) and of the official Docker image (https://laravel.com/docs/10.x/octane#frankenphp-via-docker), and no crash (Apple Silicon).

@LauJosefsen, a reproducer that crashes would be really helpful. I can get an AMD64 computer if necessary.

binaryfire commented 6 months ago

I cloned the reproduction repo and ran 3 consecutive tests on Ubuntu 22.04 (WSL2). No crashes. Results:

Run 1:

image

Run 2:

image

Run 3:

image

I'll spin up a VPS and re-run the tests but if it works on WSL2 I'm pretty sure it's going to work on the VPS too.

binaryfire commented 6 months ago

Ok that's interesting... It did crash on the test server:

image
dunglas commented 6 months ago

@binaryfire the process stopped? Could you give me the details of the VPS you used so I can try to reproduce on the same environnement?

binaryfire commented 6 months ago

@dunglas Yeah, it stopped. Sometimes after 50-60 requests, sometimes 100-200. Do you want me to set up a test VPS for you and give you access?

dunglas commented 6 months ago

@binaryfire that would be awesome if possible (a root access or at least a GDB installation will likely be necessary to debug). Thank you very much!

binaryfire commented 6 months ago

@dunglas No worries! Will do it later tonight and DM you the details on X

LauJosefsen commented 6 months ago

@LauJosefsen, a reproducer that crashes would be really helpful. I can get an AMD64 computer if necessary.

I have attached a Dockerfile that inits a laravel project, and a docker compose to start it. I actually get an immediate segfault with this setup. (Exit 139) Running on popos with kernel version Linux 6.6.10-76060610-generic x86_64 and docker version 25.0.3.

FROM composer:2.7.1 AS composer

FROM php:8.3.3-apache

ENV COMPOSER_ALLOW_SUPERUSER 1

# Install git
RUN apt-get update && apt-get install -y git libzip-dev \
    && apt-get clean

# Install ZIP required for newing a Laravel project, and pcntl for Octane.
RUN docker-php-ext-install zip pcntl

# Composer installation
ENV COMPOSER_HOME /tmp/
COPY --link --from=composer /usr/bin/composer /usr/bin/composer

# Make new laravel app
RUN composer create-project laravel/laravel example-app

WORKDIR /var/www/html/example-app

RUN composer install

RUN composer require laravel/octane

# install frankenphp
RUN php artisan octane:install --server=frankenphp

CMD ["php", "artisan", "octane:start", "--server=frankenphp"]
services:
  laravel:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "8000:8000"

Run it with

docker compose up --build

I get the output

 ✔ Container frankenphp-laravel-1  Created                                                                                                                                                                                                                                                                                                                                                                                    0.0s 
Attaching to laravel-1
laravel-1  | 
laravel-1  |    INFO  Server running…
laravel-1  | 
laravel-1  |   Local: http://127.0.0.1:8000 
laravel-1  | 
laravel-1  |   Press Ctrl+C to stop the server
laravel-1  | 
laravel-1 exited with code 139
binaryfire commented 6 months ago

@dunglas Have sent you a DM on X. VPS which reproduces the problem is ready to go.