Sto eseguendo alcuni test di carico sul mio nuovo server Apache/PHP/Mysql (stack Bitnami LAMP, Php 7.0.3/MySQL 5.7.10). Sto usando AWS con 1 istanza EC2 dietro a loadBalancer. Al momento sto usando loader.io o jmeter per i test. Sto testando una semplice API che eseguire questa query:Mysql mostra non più di 5 connessioni simultanee
select *,sleep(0.5) from debug limit 1
ho aggiunto il sonno (0,5) perché volevo vedere come si comportano server con più connessioni simultanee e ho trovato un collo di bottiglia: se corro " MOSTRA ELENCO PROCESS "Posso vedere solo 5 processi anche se ho 10 utenti contemporanei. Il test di carico mostra che le connessioni vengono accodate perché il tempo di risposta aumenta durante il test da 500 millisecondi a diversi secondi (a seconda della durata del test e del numero di utenti concorrenti).
ho controllato
select @@max_connections
ed è 151 (il default). max_user_connections è 0. Quale altro parametro dovrei controllare per aumentare il numero di connessioni simultanee sul mio DB?
Se eseguo il test con 5 utenti simultanei, ognuno riceve una risposta in 500 millisecondi. Se aggiungo più utenti simultanei di quanto il tempo di risposta rallenti.
Se eseguo il test di carico su un'API che non accede al DB, non ci sono problemi anche con 400 utenti simultanei.
EDIT:
Monitoraggio con HTOP vedo:
Compiti: 34, 245 thr; 2 in esecuzione
Potrebbe essere qui il problema?
Grazie mille
Puoi descrivere il tuo server PHP/MySQL in maggior dettaglio? Quale server web stai usando? Modulo Apache, CGI, FCGI? – CodeZombie
Come stai eseguendo i test simultanei? Hai provato a prolungare il tempo di sonno per garantire che la query rimanga abbastanza a lungo? –
Questa query verrà interrotta solo se è presente almeno una riga di dati nella tabella di debug. Controlla anche MAX_USER_CONNECTIONS per l'utente è anche zero in quanto può essere impostato per utente. –