Mysql show no more than 5 concurrent connection
I'm performing some load tests on my brand new server Apache/PHP/Mysql (Bitnami LAMP stack. Php 7.0.3/MySQL 5.7.10 ). I'm using AWS with 1 EC2 instance behind a loadBalancer. At the moment I'm using loader.io or jmeter for the tests. I'm testing a very simple API that perform this query:
select *,sleep(0.5) from debug limit 1
I added the sleep(0.5) because I wanted to see how the server behave with multiple concurrent connections and I found a bottleneck: if I run "SHOW PROCESSLIST" I can see only 5 process even if I have 10 concurrent user. The load test show that the connections are queued because the response time is growing during the test from 500 milliseconds to several seconds (depending on the duration of the test and the number of concurrent users).
I checked
select @@max_connections
and it's 151 (the default). max_user_connections is 0. What other parameter should I check to increase the number of concurrent connection on my DB?
If I run the test with 5 concurrent users, each one get a response in 500 milliseconds. If I add more concurrent users than the response time slow down.
If I run the load test on an API that does not access the DB there are no issues even with 400 concurrent users.
EDIT:
Monitoring with HTOP I see:
Tasks: 34, 245 thr; 2 running
Could be here the issue?
Thanks a lot
There are two areas for allowing concurrent connections:
1. Web servers
Check number of concurrent connections allowed by your web server.
See
Select your web server wisely to handle more concurrent connections.
2. Database and Open Files
Check your MySQL DB is capable of handling max concurrent connection coming from WebServer PHP.
Set max_connections to some higher amount.
set global max_connections := 800;
Also check open_files_limit for your OS. On linux, your process is limited to 1024 files, by default. This is very low, since every thread, connection, and, of course, file -- make for a file handle in linux. So set open_files_limit to some generous number (say 10000) to clear up your many connections with the operating system.
The solution was actually very easy:
The Bitnami LAMP stack I'm using is configured with PHP-FPM, so the configuration is not on the apache side but in php/etc/common.conf
pm=ondemand
pm.max_children=5
pm.start_servers=2
pm.min_spare_servers=1
pm.max_spare_servers=3
inreasing the pm.max_children=5
solved the issue.
上一篇: :: after和::之间的区别是什么?
下一篇: Mysql显示不超过5个并发连接