Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
PHP und persistente Datenbankverbindungen
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German)
View previous topic :: View next topic  
Author Message
schmidicom
Veteran
Veteran


Joined: 09 Mar 2006
Posts: 1470
Location: Schweiz

PostPosted: Tue Mar 27, 2018 3:12 pm    Post subject: PHP und persistente Datenbankverbindungen Reply with quote

Nach irgend einem Update, ich weiß inzwischen selber nicht mehr so genau welches, versuchte ich fast einen Monat lang herauszufinden warum sich meine Nextcloud bei eingeschaltetem opcache immer wieder innerhalb von nur 24h komplett aufhängte. Und auch wenn sich inzwischen endlich eine brauchbare Lösung finden ließ so wüsste ich doch gern wer/was jetzt eigentlich schuld war.

Die Details:
Ich habe eine Nextcloud mit knapp 200 Usern (per LDAP von einem Active Directory) im Betrieb, von denen aber selten mehr als 10 gleichzeitig online sind. Diese Läuft auf einer Gentoo-Installation mit [zum Zeitpunkt an dem ich das hier schreibe] Apache 2.4.32, PHP 7.2.3 und einem MariaDB 10.1.31.

Was passierte:
Wie bereits erwähnte hängte sich die Nextcloud, bei eingeschaltetem opcache, mit allen möglichen und nicht wirklich hilfreichen Fehlermeldungen innert 24h auf. Und oft sogar so heftig das der ganze Apache gleich mit gerissen wurde wodurch alle die versuchten die Webseite zu öffnen nur noch einen HTTP ERROR 500 zu sehen bekommen haben. Die Fehlerlogdateien vom Apache und Nextcloud wurden dabei regelrecht zugemüllt so das diese innert kürzester Zeit ein paar GB groß waren.

Ich versuchte, unter anderem, durch das umkonfigurieren des opcache in der php.ini das alles irgendwie in den Griff zu bekommen aber nichts half. Erst vor kurzem bin ich durch mehr oder weniger zufälliges durchwälzen irgendwelcher Bugreports die nur entfernt etwas mit meinem Problem zu tun hatten darauf gekommen in der php.ini mal die persistenten MySQL-Verbindungen zu limitieren und tatsächlich es wurde besser, noch nicht gut aber dennoch deutlich besser. Nach dem vollständigen abschalten über die Option "mysqli.allow_persistent = Off" läuft nun alles wieder genau so wie es soll.

Vielleicht kann mir ja hier jemand erklären warum diese "persistenten Verbindungen" von einem Moment auf den anderen ein so heftiges Problem wurden. Mir ist das ein Rätsel...

Links:
http://php.net/manual/de/features.persistent-connections.php
http://php.net/manual/de/mysqli.configuration.php
_________________
GPG: B5114B6154A19454
Back to top
View user's profile Send private message
ChrisJumper
Advocate
Advocate


Joined: 12 Mar 2005
Posts: 2077
Location: Germany

PostPosted: Fri Mar 30, 2018 11:26 am    Post subject: Reply with quote

Hast du schon via mytop oder nach Login in die Datenbank via show processlist oder

Code:
mysql> show status like 'Con%'


Nachgeschaut wie viele Verbindungen offen sind? Vielleicht baut das System wegen einem Bug in Nextcloud immer wieder neue persistente Verbindungen auf und diese nicht mehr ab. Wodurch nach einer Zeit natürlich die Ressourcen schwinden.

Was du auch machen könntest wäre das System nachts, wenn es nicht gebraucht wird mal neu zu starten. Also MYSQL und Nextcloud deaktivieren und dann gleich wieder neu zu starten.

Zwischendrin könntest dann auch ein Backup machen.

Ansonsten ist es natürlich immer gut Vitaldaten vom System zu protokolieren und schauen ob es da hinweise gibt auf erhöhten Speicherverbrauch etc..
Back to top
View user's profile Send private message
schmidicom
Veteran
Veteran


Joined: 09 Mar 2006
Posts: 1470
Location: Schweiz

PostPosted: Fri Mar 30, 2018 2:01 pm    Post subject: Reply with quote

Durch das abschalten der persistenten Verbindungen läuft meine Nextlcoud stabil, daher könnte ich es gegenüber den Benutzern nicht verantworten es zu Analysezwecken wieder einzuschalten. Aber ich habe während der Fehlersuche regelmäßig einen Blick auf den Monitor von phpMyAdmin geworfen und immer kurz bevor sich der Apache mit verabschiedete schnellte die anzahl Verbindungen in die Höhe. An die Logs die davon noch übrig geblieben sind komme ich aber erst nach Ostern wieder heran (die liegen auf meinem Rechner am Arbeitsplatz). Jedoch erinnere ich mich daran das gegen Ende der Fehlersuche im Apache-Log manchmal eine "SQLSTATE[HY000] *** Too Many Connections"-Meldung auftauchte.

Inzwischen glaube ich das etwas ähnliches passiert sein muss was in dem weiter oben schon verlinkten Artikel erwähnt wird:
Persistente Datenbankverbindungen wrote:
...
Sie sollten sich zur Vorsicht noch ein paar Gedanken machen, wenn Sie persistente Verbindungen benutzen. Einer ist, wenn Sie über eine persistente Verbindung Tabellen sperren und das Skript diese Sperre aus welchem Grund auch immer nicht mehr aufheben kann, nachfolgende Skripte, welche die selbe Verbindung benutzen, blockieren und den Neustart von entweder dem Webserver oder dem Datenbankserver verlangen.
...


EDIT: [12.04.2017]
Heute ist es wieder passiert, die Nextcloud war nicht mehr aufrufbar aber der Apache funktionierte noch. Fast zwei Wochen ohne Ausfall und dann wieder haufenweise "...SQLSTATE[HY000] [1040] Zu viele Verbindungen in..." im Log. Ich habe nun die persistenten Verbindungen wieder erlaubt und stattdessen das "max_connections"-Limit im MariaDB-Server von 151 auf 1000 hochgeschraubt, mal sehen was jetzt in den nächsten Tagen passiert oder mit viel Glück eben nicht mehr passiert...
Was ich noch sagen kann ist das nun (laut Aussage von phpMyAdmin) die Anzahl aktiver Verbindung, selbst wenn nur wenig los ist, gelegentlich kurz auf bis zu 95 hochschnellt obwohl nur 3 bis 5 Prozesse am laufen sind.
_________________
GPG: B5114B6154A19454
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum