Neuer VS - Apache 2.4 MPM-Event: (22) Invalid argument: ap_queue_pop failed

DevDavid

New Member
Hallo miteinander, mittlerweile bin ich mit meinem Latein komplett am Ende und würde mich so freuen wenn ich Hilfe bekomme!
Ich habe mir vor einigen Wochen ein neuen VS (64bit, vCores, 6GB RAM, Ubuntu 14.04) gemietet der als reiner Webserver arbeiten soll.
Apache 2.4.7 (und PHP7 fpm) läuft als Event-MPM aber immer wieder zu unterschiedlichen Zeitpunkten (mal Stunden, mal ein paar Tage) stürzt Apache ab. In den Fehlerlogs findet man (selbst während weniger belebten Stunden) hunderte solcher Einträge:
[Thu Jul 21 17:51:16.633617 2016] [mpm_event:crit] [pid 9290:tid 139705492948732] (22)Invalid argument: ap_queue_pop failed
[Thu Jul 21 17:51:16.633622 2016] [mpm_event:crit] [pid 9290:tid 139705492948732] (22)Invalid argument: ap_queue_pop failed
[Thu Jul 21 17:51:16.633627 2016] [mpm_event:crit] [pid 9290:tid 139705492948732] (22)Invalid argument: ap_queue_pop failed
[Thu Jul 21 17:51:18.632095 2016] [mpm_event:alert] [pid 9313:tid 139705857640190] (11)Resource temporarily unavailable: apr_thread_create: unable to create worker thread
[Thu Jul 21 17:51:19.632842 2016] [mpm_event:alert] [pid 9337:tid 139705857640190] (11)Resource temporarily unavailable: apr_thread_create: unable to create worker thread


Ich habe bereits hohe(?) Systemlimits via ulimit -a:
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 1546681
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 1546681
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited

Der Blogeintrag von Mozilla hat leider auch nicht geholfen da mein Limit bereits höher war als dort vorgeschlagen. Ich hab auch gelesen das man den privvmpages erhöhen kann, allerdings ist dieser schon hoch eingestellt gewesen:
Code:
$ cat /proc/user_beancounters
Version: 2.5
       uid  resource                     held              maxheld              barrier                limit              failcnt
   130922:  kmemsize                173862701            175349760  9223372036854775807  9223372036854775807                    0
            lockedpages                     0                    0              1572864              1572864                    0
            privvmpages               3327626              3330707              3670016              3670016                31705
            shmpages                    92638                92638  9223372036854775807  9223372036854775807                    0
            dummy                           0                    0  9223372036854775807  9223372036854775807                    0
            numproc                       279                  363                  850                  850                    0
            physpages                  356751               363453                    0              1572864                    0
            vmguarpages                     0                    0              1835008              1835008                    0
            oomguarpages               121370               121370              1572864              1572864                    0
            numtcpsock                     69                   72  9223372036854775807  9223372036854775807                    0
            numflock                       11                   12  9223372036854775807  9223372036854775807                    0
            numpty                          2                    2  9223372036854775807  9223372036854775807                    0
            numsiginfo                      0                   63  9223372036854775807  9223372036854775807                    0
            tcpsndbuf                 1368640              1445072  9223372036854775807  9223372036854775807                    0
            tcprcvbuf                 1938112              1987264  9223372036854775807  9223372036854775807                    0
            othersockbuf               233512               241968  9223372036854775807  9223372036854775807                    0
            dgramrcvbuf                     0                    0  9223372036854775807  9223372036854775807                    0
            numothersock                  148                  150  9223372036854775807  9223372036854775807                    0
            dcachesize               61545508             61876256  9223372036854775807  9223372036854775807                    0
            numfile                      2133                 2280  9223372036854775807  9223372036854775807                    0
            dummy                           0                    0  9223372036854775807  9223372036854775807                    0
            dummy                           0                    0  9223372036854775807  9223372036854775807                    0
            dummy                           0                    0  9223372036854775807  9223372036854775807                    0
            numiptent                     338                  338  9223372036854775807  9223372036854775807                    0
Code:
$ free -m 
             total       used       free     shared    buffers     cached
Mem:          6144       1823       4320        361          0       1553
-/+ buffers/cache:        270       5873
Swap:         1024          0       1024

Die Seite hat manchmal bis zu 500.000 Requests pro Tag, aber davor lag alles auf einem viel ältere Server (Hard- und Software) mit nicht mal halb so viel Ressourcen und dieser hatte überhaupt keine Probleme mit der Last. Meine Event-MPM-Einstellungen:
Code:
<IfModule mpm_event_module>
    StartServers             5
    ServerLimit              32
    MinSpareThreads          60
    MaxSpareThreads          200
    ThreadLimit              64
    ThreadsPerChild          25
    MaxRequestWorkers        800
    MaxConnectionsPerChild   20000
</IfModule>

Auslastung (kaum belastet?) als Grafiken:
http://imgur.com/a/7sbEN

(Anmerkung: Die Webseite ist ein kostenloser Service den ich schon seit Jahren betreibe.)

Irgendeine Idee was ich falsch mache?
 
bei einem failcnt von 31705 ist der Wert für privvmpages wohl doch nicht hoch genug.

Habe versucht diesen zu erhöhen, aber das scheitert?
Code:
$ vzctl set 130922 --privvmpages 2G:4G --save
Unable to open /dev/vzctl: No such file or directory
Please check that vzdev kernel module is loaded and you have sufficient permissions to access the file.
 
Der Wert ist eine (für dich) unveränderbare Vorgabe deines Providers.
Diese Grenzen gibt es auch nurbei einer Virtuozzo/VZ Virtualisierung. Bei einer Voll-Virtualisierung (KVM, QEMU) gibt es solche Beschränkungen garnicht.

Wenn du das Limit eines solchen Wertes reißt wird der Failcnt erhöht und dir wird die Ressource (in dem Fall eine Speicherpage) nicht gegeben. Das der Apache da dann "abstürzt" ist zu erwarten und normal.

Thomas

PS: Welches Produkt von welchem Hoster ist es denn?
PPS: Ich empfehle PHP-Friends (weil ich nur gutes über die gehört habe) oder netcup (bei denen bin ich selber mit ner handvoll Servern und hatte noch nie Probleme). Beide setzen KVM ein und schreiben das auch deutlich. Dass Virtuozzo Virtualisierung etliche willkürliche Grenzen hat wird gerne verschwiegen. 1&1 zum Beispiel hat sehr niedrige Grenzen aber wenigstens eine Seite wo diese genannt werden: https://m.hilfe-center.1und1.de/hos...rtual-server-user-beancounters-a10784769.html
 
Hosteurope ist zumindest einer der besseren Virtuozzo Hoster. Zwar teurer dafür sind die Grenzen (beancounters) nicht gar so eng und der Support wohl annehmbar.
Übrigens haben die mittlerweile auch richtig virtualisierte Systeme, heißt bei denen wohl Root-Server (als Alternative zu den "dedicated root servern") genaue Details was das nun für eine Virtualisierungslösung sein soll (Zitat: "Zugriff bis runter auf die Kernelebene" (was bei Virtuozzo ja nicht geht)) gibts natürlich trotzdem nicht. Traurig das solche Massenhoster immer die Kunden bekommen und die deutlich offeneren (php-friends, uberspace, netcup) nicht. Obwohl sie meistens auch noch günstiger sind...
 
Es gab nun nach einigen Tagen Rückmeldung des Hosters, er wurden die Limits angepasst. Werde erstmal den Server für einige Zeit beobachten, danke für die Hilfe :)
 
Back
Top