Zasadniczo uzyskujesz połączenia w stanie uśpienia, gdy:
- skrypt PHP łączy się z MySQL
- niektóre zapytania są wykonywane
- wtedy skrypt PHP robi kilka rzeczy, które wymagają czasu
- bez odłączania od bazy danych
- i wreszcie skrypt PHP się kończy
- co oznacza, że rozłącza się z serwerem MySQL
Tak więc zazwyczaj kończysz z wieloma procesami w stanie uśpienia, gdy masz wiele procesów PHP, które pozostają połączone, bez robienia czegokolwiek po stronie bazy danych.
Podstawowa idea, więc:upewnij się, że nie masz procesów PHP, które działają zbyt długo - lub zmuś je do rozłączenia, gdy tylko nie będą już potrzebować dostępu do bazy danych.
Kolejna rzecz, którą często widzę, gdy serwer jest obciążony :
- W Apache pojawia się coraz więcej próśb
- co oznacza wiele stron do wygenerowania
- Każdy skrypt PHP, w celu wygenerowania strony, łączy się z bazą danych i wykonuje kilka zapytań
- Te zapytania zajmują coraz więcej czasu w miarę wzrostu obciążenia serwera DB
- Co oznacza, że coraz więcej procesów jest nakładanych
Rozwiązaniem, które może pomóc, jest skrócenie czasu wykonywania zapytań – optymalizacja najdłuższych.