I researched the reason why my development environment with Mac + Docker + Laravel.
My conclusion is disabling Laravel Debugbar
. It increases the app speed about 3 times faster.
The response time was 2.6s and now 0.85s, so approximately 3x faster.
The considerable reason
Laravel Debugbar creates a log file under storage/debugbar/
like Xc590ef0f5b368cf34373093291b95147.json
per request.
This is a log with a request.
~> find storage/debugbar -type f | wc -l
58
Within this file, we can view the stack trace of app.
/api
has a lot of middlewares so the file size is terribly bigger.
We can find over 24000 Line as formated json.
~> cat storage/debugbar/X2e75040e69de9cae006253a48fd5276c.json | jq . | wc -l
24676
This time size of the file was about 500KB.
~> ls -lh storage/debugbar/X2e75040e69de9cae006253a48fd5276c.json
-rw-r--r-- 1 kazuya-mac staff 508K 3 27 18:32 storage/debugbar/X2e75040e69de9cae006253a48fd5276c.json
As we know, when we run Docker on Mac, writing file is terribly slow.
So stopping the logging make app faster greatly.
TODO
I would like to use Laravel Debugbar itself, so I am looking for the way to improve the performance of Laravel Debugbar.
I think the following way should be a candidate.
- Forward logs via HTTP
- Set log output directory to directory other than
storage/logs
. - Do not mount
storage/
as Dockervolume
(Is it possible not to mount with Docker partially...?)
We may make the Laravel app faster, except for Debugbar with log output directory.
Off topic
This is useful.
#!/usr/bin/env fish
while true
curl -H 'Accept-Encoding: gzip' -Ss -LI -o /dev/null -w \
'%{http_code} in %{time_total} seconds, %{content_type} as %{size_download} \n' \
$argv
sleep 1
end
Top comments (5)
It's been 2 years since this was posted but I will let the solution I have founded here to help anyone with the same issue, setting the Nginx and PHP volumes to cached and rebuilding the containers reduced my response times from 2.7s to 0.7s without need to do any change on Laravel.
Were you able to resolve it?
Yes, disabling Laravel Debugbar resolved the issue in my case. 3x faster...!
Sorry. Wrong question. I was wondering if you were able to get Debugbar work faster with Docker+Laravel (as mentioned in your ToDo)? I'd like to use Debugbar for certain use cases. But the slowness is a hindrance.
Sorry for misunderstanding.
No, I couldn't finally get Debugbar work faster in Docker environment.