Dies wird Ihnen helfen, einige testings tun ...
auf MySQL-Server laufen diese Abfrage ...
show processlist;
Wenn dies eine Menge zeigt von Verbindungen dann können Sie das Problem mit max_connections treffen. Versuchen Sie, das auf eine vernünftige Anzahl zu erhöhen. Aber machen Sie es nicht zu sehr, denn wenn es die Menge der verfügbaren Ressourcen auf Ihrem Server übersteigt, wird es MySql Server zum Absturz bringen und es wird zu einem größeren Problem, wenn Ihre Website offline gehen wird.
Versuchen Sie zu überprüfen, ob Sie Sitzungen ordnungsgemäß in Ihren Skripten mit session_write_close() schließen; Sie können mehr über diese Funktion hier finden: http://php.net/manual/en/function.session-write-close.php Diese Funktion wird die aktuelle Sitzung des Benutzers auf der Festplatte schreiben, um beim nächsten Mal neu geladen zu werden, und der wichtigste Teil, der für Sie mit diesem Problem tun wird, ist, dass PHP jegliche Verbindung zum MySql Server schließt Damit wird der MySql-Server freigegeben, damit der nächste Besucher eine weitere Seite öffnen kann.
Angenommen, Sie haben 150 max_connections und gleichzeitig 200 Besucher, dann wartet PHP noch eine Weile, bis weitere 50 Verbindungen frei sind, bevor ein Timeout-Fehler ausgegeben wird. "Verbindung zum Server konnte nicht hergestellt werden ". Aber, wenn Sitzungen nicht richtig schließen, dann ist es so schlimm, dass 50 Verbindungen nie verarbeitet werden, weil 150 wird nie sehr bald weggehen, gibt es eine separate MySql-Einstellung für diese namens wait_timeout. Also wird jede MySql-Verbindung, die Sie öffnen, so lange warten, bis Sie sich selbst im Skript schließen, so wie Sie ODER öffnen, bis wait_timeout passiert. Wenn Sie die Sitzungen jedoch ordnungsgemäß schließen, wird die nächste Verbindung verfügbar, sobald Ihr PHP-Skript die Verarbeitung abgeschlossen hat und die Seite für den Benutzer erstellt wurde. Die Verbindung wird frei für die nächste Verbindung.
Haben Sie Ihren Code überprüft? Haben Sie die Sitzung nach der Verwendung geschlossen? – Genuine
Hat Ihr MySql Server viel Verkehr? Bitte versuchen Sie "show processlist;" um zu prüfen, wie viele Verbindungen offen sind. Möglicherweise müssen Sie das Verbindungslimit von MySql Server erhöhen. ODER etwas wie @Genuine vorgeschlagen, schließen Joomla Sitzungen richtig? session_write_close() schließt auch Datenbankverbindungen, wenn sie geöffnet sind. – rsharpy
@Genuine Ich habe session_write_close() oder irgendwelche Sitzungsfunktionen in meinem Programm nicht verwendet, ich habe keine Ahnung, ob du mehr erklären kannst. – alnassre