Memory Leak in Liveconfig 2.0?

  • Aktuell wird das hier ausgegeben:


    Code
    root       479  0.0  0.0   4492  1664 ?        Ss   Nov18   0:03 /usr/lib/liveconfig/lclogparse -c /etc/liveconfig/lclogparse.conf
    root     42132  0.0  0.0  14188  2152 pts/0    S+   12:29   0:00 grep liveconfig
    root     43288  0.0  0.0   4216   676 ?        S    07:25   0:00 /usr/lib/liveconfig/lclogsplit -m /etc/apache2/accesslog.map -s /var/lib/liveconfig/apachelog.stats
    root     47770  0.0  0.0  44912  2592 ?        Ss   Nov25   0:00 /usr/sbin/liveconfig
    livecon+ 47773  0.0  0.4 7968804 18292 ?       Sl   Nov25   0:03 liveconfig [server]
    root     47774  0.0  0.2 267580 11028 ?        Sl   Nov25   0:02 liveconfig [client]
  • Wir haben da tatsächlich was im Bereich des ACME-Clients gefunden - es handelt sich aber "nur" um virtuellen Speicher (VSZ, nicht RSS). Fehler ist behoben, Update gerade in Arbeit.


    Scheint leider nicht alles gewesen zu sein - ich hab das Update heute Mittag gleich eingespielt und so vor 30 Minuten etwa den Server einmal komplett neu gestartet, um irgendwelche Quereffekte oder Reste alter Prozesse auszuschließen.


    Zitat

    ps aux | grep liveconfig


    Code
    root       504  0.0  0.0   4492  1524 ?        Ss   20:22   0:00 /usr/lib/liveconfig/lclogparse -c /etc/liveconfig/lclogparse.conf
    root      1639  0.0  0.0   4216   672 ?        S    20:22   0:00 /usr/lib/liveconfig/lclogsplit -m /etc/apache2/accesslog.map -s /var/lib/liveconfig/apachelog.stats
    root      2233  0.0  0.0  44928  2628 ?        Ss   20:22   0:00 /usr/sbin/liveconfig
    livecon+  2237  0.0  0.2 631088  8668 ?        Sl   20:22   0:00 liveconfig [server]
    root      2238  0.0  0.2 267596 10560 ?        Sl   20:22   0:00 liveconfig [client]
    root      4375  0.0  0.0  14192  2324 pts/0    S+   20:30   0:00 grep liveconfig


    5 Minuten später


    Code
    root       504  0.0  0.0   4492  1588 ?        Ss   20:22   0:00 /usr/lib/liveconfig/lclogparse -c /etc/liveconfig/lclogparse.conf
    root      1639  0.0  0.0   4216   672 ?        S    20:22   0:00 /usr/lib/liveconfig/lclogsplit -m /etc/apache2/accesslog.map -s /var/lib/liveconfig/apachelog.stats
    root      2233  0.0  0.0  44928  2628 ?        Ss   20:22   0:00 /usr/sbin/liveconfig
    livecon+  2237  0.0  0.2 672068  8988 ?        Sl   20:22   0:00 liveconfig [server]
    root      2238  0.0  0.2 267596 10960 ?        Sl   20:22   0:00 liveconfig [client]
    root      5429  0.0  0.0  14192  2156 pts/0    S+   20:36   0:00 grep liveconfig


    Der VSZ-Wert für liveconfig [server] steigt zwar langsam, aber kontinuierlich weiter an. das ist insofern mißlich, als dass dann irgendwann auch andere Prozesse Probleme mit dem virtuellen Memory bekommen.

  • Ja... super das noch jemand den Fehler hatte.. Ich hab zum Glück vor dem eigentlichem Update auf v2 ein Image des alten Systems komplett gemacht.. Nach 1 Tag war mein Server wegen zu wenig RAM nicht mehr erreichbar bis ich einen Neustart gemacht hatte.. Problem hab ich das selbige... Darauf hin hab ich dann erstmal mein v1.9 Image eingespielt, weil hab ja nicht Lust alle paar min/stunden das ding neuzustarten.. ^^

  • Ja... super das noch jemand den Fehler hatte.. Ich hab zum Glück vor dem eigentlichem Update auf v2 ein Image des alten Systems komplett gemacht.. Nach 1 Tag war mein Server wegen zu wenig RAM nicht mehr erreichbar bis ich einen Neustart gemacht hatte.. Problem hab ich das selbige... Darauf hin hab ich dann erstmal mein v1.9 Image eingespielt, weil hab ja nicht Lust alle paar min/stunden das ding neuzustarten.. ^^


    Naja, den ganzen Server muss man nicht neu starten, um das Problem (vorläufig) zu beheben - das habe ich oben nur gemacht, um irgendwelche möglichen Quereffekte des Updates auszuschließen.


    Ein


    Code
    /etc/init.d/liveconfig restart


    (notfalls per Cron alle x Stunden aufgerufen) tut es auch und alle anderen Dienste laufen ungestört weiter (und auch der "Ausfall" von Liveconfig ist sehr kurz). Der Weisheit letzter Schluß ist das natürlich aber auch nicht, besser wäre es wenn es ohne solche Maßnahmen ginge.

  • Mit v2.0.1-r3878 steht ab sofort ein Update bereit, welches das Leak behebt.


    [Hintergrund für Interessierte: das eigentliche Memory-Leak (eine fehlende Freigabe von JSON-Objekten) wurde mit r3973 beseitigt. Wir hatten das erfolgreich mit Valgrind getestet - der komplette Speicher war nach dem Ende eines LiveConfig-Prozesses wieder ordentlich freigegeben. Allerdings prüft der ACME-Client minütlich ob es Arbeit für ihn gibt - das passiert in einem separaten Thread (wegen den asynchronen HTTP-Anfragen zum ACME-Server), und eben diese Threads wurden am Ende ihrer Tätigkeit nicht vollständig beendet. Allerdings wurden diese Threads mit dem Ende von LiveConfig automatisch aufgeräumt, wodurch das im Memory-Profiler nicht aufgefallen ist.]

  • Hallo,
    ich habe leider noch immer das Problem auf debian7, dass der RAM aufgefressen wird. Liveconfig neu zu starten bringt gar nichts. Ich habe es mal aller paar Minuten aufgerufen.


    root@:~# ps aux | grep liveconfig
    root 4967 0.0 0.0 4316 572 ? Ss 09:33 0:00 /usr/lib/liveconfig/lclogparse -c /etc/liveconfig/lclogparse.conf
    root 5491 0.0 0.0 4040 712 ? S 12:30 0:01 /usr/lib/liveconfig/lclogsplit -m /etc/apache2/accesslog.map -s /var/lib/liveconfig/apachelog.stats
    root 30504 0.0 0.0 44356 1732 ? Ss 17:56 0:00 /usr/sbin/liveconfig
    114 30522 0.1 0.0 240916 7972 ? Sl 17:56 0:00 liveconfig [server]
    root 30523 0.0 0.0 273968 6560 ? Sl 17:56 0:00 liveconfig [client]
    root 31364 0.0 0.0 6264 760 pts/0 S+ 18:01 0:00 grep liveconfig
    root@:~# ps aux | grep liveconfig
    root 4967 0.0 0.0 4316 572 ? Ss 09:33 0:00 /usr/lib/liveconfig/lclogparse -c /etc/liveconfig/lclogparse.conf
    root 5491 0.0 0.0 4040 712 ? S 12:30 0:01 /usr/lib/liveconfig/lclogsplit -m /etc/apache2/accesslog.map -s /var/lib/liveconfig/apachelog.stats
    root 30504 0.0 0.0 44356 1732 ? Ss 17:56 0:00 /usr/sbin/liveconfig
    114 30522 0.1 0.0 261824 8368 ? Sl 17:56 0:00 liveconfig [server]
    root 30523 0.0 0.0 273968 6560 ? Sl 17:56 0:00 liveconfig [client]
    root 31567 0.0 0.0 6264 760 pts/0 S+ 18:03 0:00 grep liveconfig
    root@:~# ps aux | grep liveconfig
    root 4967 0.0 0.0 4316 572 ? Ss 09:33 0:00 /usr/lib/liveconfig/lclogparse -c /etc/liveconfig/lclogparse.conf
    root 5491 0.0 0.0 4040 712 ? S 12:30 0:01 /usr/lib/liveconfig/lclogsplit -m /etc/apache2/accesslog.map -s /var/lib/liveconfig/apachelog.stats
    root 30504 0.0 0.0 44356 1732 ? Ss 17:56 0:00 /usr/sbin/liveconfig
    114 30522 0.0 0.0 272068 8428 ? Sl 17:56 0:00 liveconfig [server]
    root 30523 0.0 0.0 273968 6560 ? Sl 17:56 0:00 liveconfig [client]
    root 31714 0.0 0.0 6264 756 pts/0 S+ 18:05 0:00 grep liveconfig
    root@:~# ps aux | grep liveconfig
    root 4967 0.0 0.0 4316 572 ? Ss 09:33 0:00 /usr/lib/liveconfig/lclogparse -c /etc/liveconfig/lclogparse.conf
    root 5491 0.0 0.0 4040 712 ? S 12:30 0:01 /usr/lib/liveconfig/lclogsplit -m /etc/apache2/accesslog.map -s /var/lib/liveconfig/apachelog.stats
    root 30504 0.0 0.0 44356 1732 ? Ss 17:56 0:00 /usr/sbin/liveconfig
    114 30522 0.0 0.0 282424 8528 ? Sl 17:56 0:00 liveconfig [server]
    root 30523 0.0 0.0 273968 6560 ? Sl 17:56 0:00 liveconfig [client]
    root 31809 0.0 0.0 6264 756 pts/0 S+ 18:06 0:00 grep liveconfig
    root@:~#

  • Wenn LiveConfig frisch gestartet ist (was Ihrem Log nach um 17:56 war) dann wächst der Speicherverbrauch selbstverständlich erst noch etwas an (Caching von MySQL-Statements, von Objekten usw...). Schauen Sie sich den Verbrauch noch mal nach 15-20 Minuten an, dann sollte sich das eingependelt haben.

  • Ich habe jetzt noch 3 Ausgaben gemacht.


    root@:~# ps aux | grep liveconfig
    root 1761 0.0 0.0 6260 724 pts/0 S+ 18:25 0:00 grep liveconfig
    root 4967 0.0 0.0 4316 572 ? Ss 09:33 0:00 /usr/lib/liveconfig/lclogparse -c /etc/liveconfig/lclogparse.conf
    root 5491 0.0 0.0 4040 712 ? S 12:30 0:01 /usr/lib/liveconfig/lclogsplit -m /etc/apache2/accesslog.map -s /var/lib/liveconfig/apachelog.stats
    root 30504 0.0 0.0 44356 1732 ? Ss 17:56 0:00 /usr/sbin/liveconfig
    114 30522 0.0 0.0 478140 9172 ? Sl 17:56 0:01 liveconfig [server]
    root 30523 0.0 0.0 273968 6680 ? Sl 17:56 0:00 liveconfig [client]
    root@:~# 114 30522 0.0 0.0 478140 9172 ? Sl 17:56 0:01 liveconfig [server]
    root@:~# ps aux | grep liveconfig
    root 1877 0.0 0.0 6260 724 pts/0 S+ 18:26 0:00 grep liveconfig
    root 4967 0.0 0.0 4316 572 ? Ss 09:33 0:00 /usr/lib/liveconfig/lclogparse -c /etc/liveconfig/lclogparse.conf
    root 5491 0.0 0.0 4040 712 ? S 12:30 0:01 /usr/lib/liveconfig/lclogsplit -m /etc/apache2/accesslog.map -s /var/lib/liveconfig/apachelog.stats
    root 30504 0.0 0.0 44356 1732 ? Ss 17:56 0:00 /usr/sbin/liveconfig
    114 30522 0.0 0.0 488384 9180 ? Sl 17:56 0:01 liveconfig [server]
    root 30523 0.0 0.0 273968 6680 ? Sl 17:56 0:00 liveconfig [client]
    root@:~# root 1761 0.0 0.0 6260 724 pts/0 S+ 18:25 0:00 grep liveconfig
    -bash: root: command not found
    root@:~# ps aux | grep liveconfig
    root 2026 0.0 0.0 6260 724 pts/0 S+ 18:27 0:00 grep liveconfig
    root 4967 0.0 0.0 4316 572 ? Ss 09:33 0:00 /usr/lib/liveconfig/lclogparse -c /etc/liveconfig/lclogparse.conf
    root 5491 0.0 0.0 4040 712 ? S 12:30 0:01 /usr/lib/liveconfig/lclogsplit -m /etc/apache2/accesslog.map -s /var/lib/liveconfig/apachelog.stats
    root 30504 0.0 0.0 44356 1732 ? Ss 17:56 0:00 /usr/sbin/liveconfig
    114 30522 0.0 0.0 508872 9272 ? Sl 17:56 0:01 liveconfig [server]
    root 30523 0.0 0.0 273968 6660 ? Sl 17:56 0:00 liveconfig [client]
    root@:~#

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!