Anwendungen können aufgrund des Fehlers „Maximale Anzahl an Clients erreicht“ nicht gestartet werden

Anwendungen können aufgrund des Fehlers „Maximale Anzahl an Clients erreicht“ nicht gestartet werden

Nach einiger Zeit habe ich Probleme beim Starten von Anwendungen, zum Beispiel Viber.

$ /opt/viber/Viber
QSqlDatabasePrivate::removeDatabase: connection 'ConfigureDBConnection' is still in use, all queries will cease to work.
Maximum number of clients reached
(Viber:1279): Gtk-WARNING **: cannot open display: :0

Skype

$ skype
Maximum number of clients reached

Gnote

$ gnote
Maximum number of clients reached
** (gnote:21284): WARNING **: Could not open X display
Maximum number of clients reached
(gnote:21284): Gtk-WARNING **: cannot open display: :0

xrestop

$ xrestop
Maximum number of clients reachedxrestop: Unable to open display!

Nach einigen Recherchen bin ich zu dem Schluss gekommen, dass es mit einer Beschränkung der Unix-Sockets zusammenhängt.

$ lsof -U +c 15 | wc -l
1011


$ lsof -U +c 15 | cut -f1 -d' ' | sort | uniq -c | sort -rn | head -3
    382 zenity
    256 dbus-daemon
    212 chrome

In einigen Quellen wird von einer maximalen Anzahl von X-Clients von 256 gesprochen. Dies scheint durch die folgende Befehlsausgabe bewiesen zu werden:

# lsof -p `pidof X` | tail -n 50
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
      Output information may be incomplete.
Xorg    1672 root  207u     unix 0xffff880141189e00      0t0    3759941 @/tmp/.X11-unix/X0
Xorg    1672 root  208u     unix 0xffff88001a50a940      0t0    3759944 @/tmp/.X11-unix/X0
Xorg    1672 root  209u     unix 0xffff88003a0430c0      0t0    3802123 @/tmp/.X11-unix/X0
Xorg    1672 root  210u     unix 0xffff8801117c3c00      0t0    3817272 @/tmp/.X11-unix/X0
Xorg    1672 root  211u     unix 0xffff8801225e2580      0t0    4395710 @/tmp/.X11-unix/X0
Xorg    1672 root  212u     unix 0xffff88015ed3a580      0t0    4425629 @/tmp/.X11-unix/X0
Xorg    1672 root  213u     unix 0xffff88013095f800      0t0    4427059 @/tmp/.X11-unix/X0
Xorg    1672 root  214u     unix 0xffff8802e75d9a40      0t0    4427075 @/tmp/.X11-unix/X0
Xorg    1672 root  215u     unix 0xffff8801225e12c0      0t0    4608310 @/tmp/.X11-unix/X0
Xorg    1672 root  216u     unix 0xffff88031bc8fbc0      0t0    4608314 @/tmp/.X11-unix/X0
Xorg    1672 root  217u     unix 0xffff8801309a5dc0      0t0    4608318 @/tmp/.X11-unix/X0
Xorg    1672 root  218u     unix 0xffff8801309a2940      0t0    4607747 @/tmp/.X11-unix/X0
Xorg    1672 root  219u     unix 0xffff880130958b40      0t0    4786413 @/tmp/.X11-unix/X0
Xorg    1672 root  220u     unix 0xffff8800b1382d00      0t0    4787103 @/tmp/.X11-unix/X0
Xorg    1672 root  221u     unix 0xffff88011f350000      0t0    5001136 @/tmp/.X11-unix/X0
Xorg    1672 root  222u     unix 0xffff88011f352d00      0t0    5144089 @/tmp/.X11-unix/X0
Xorg    1672 root  223u     unix 0xffff88011f351a40      0t0    5144417 @/tmp/.X11-unix/X0
Xorg    1672 root  224u     unix 0xffff88011f357bc0      0t0    5145648 @/tmp/.X11-unix/X0
Xorg    1672 root  225u     unix 0xffff88014108a940      0t0    5145652 @/tmp/.X11-unix/X0
Xorg    1672 root  226u     unix 0xffff88001a50c740      0t0    5145655 @/tmp/.X11-unix/X0
Xorg    1672 root  227u     unix 0xffff88006c7b6cc0      0t0    5161703 @/tmp/.X11-unix/X0
Xorg    1672 root  228u     unix 0xffff8802e75dddc0      0t0    5225428 @/tmp/.X11-unix/X0
Xorg    1672 root  229u     unix 0xffff88015ed3cb00      0t0    5228455 @/tmp/.X11-unix/X0
Xorg    1672 root  230u     unix 0xffff880111b203c0      0t0    5235401 @/tmp/.X11-unix/X0
Xorg    1672 root  231u     unix 0xffff88013089bfc0      0t0    5259828 @/tmp/.X11-unix/X0
Xorg    1672 root  232u     unix 0xffff8800b10030c0      0t0    5310616 @/tmp/.X11-unix/X0
Xorg    1672 root  233u     unix 0xffff88010d461e00      0t0    5349971 @/tmp/.X11-unix/X0
Xorg    1672 root  234u     unix 0xffff88001a50ddc0      0t0    5530781 @/tmp/.X11-unix/X0
Xorg    1672 root  235u     unix 0xffff880142e703c0      0t0    5529146 @/tmp/.X11-unix/X0
Xorg    1672 root  236u     unix 0xffff880142e73c00      0t0    5654363 @/tmp/.X11-unix/X0
Xorg    1672 root  237u     unix 0xffff88025087f800      0t0    5260838 @/tmp/.X11-unix/X0
Xorg    1672 root  238u     unix 0xffff880142e712c0      0t0    5814164 @/tmp/.X11-unix/X0
Xorg    1672 root  239u     unix 0xffff8802508a21c0      0t0    5917312 @/tmp/.X11-unix/X0
Xorg    1672 root  240u     unix 0xffff8800b1387080      0t0    5851281 @/tmp/.X11-unix/X0
Xorg    1672 root  241u     unix 0xffff8802e6854380      0t0    5851284 @/tmp/.X11-unix/X0
Xorg    1672 root  242u     unix 0xffff88011f3503c0      0t0    5851295 @/tmp/.X11-unix/X0
Xorg    1672 root  243u     unix 0xffff8801041d8f00      0t0    5917315 @/tmp/.X11-unix/X0
Xorg    1672 root  244u     unix 0xffff8801041d83c0      0t0    5917322 @/tmp/.X11-unix/X0
Xorg    1672 root  245u     unix 0xffff88000aeb4ec0      0t0    5917325 @/tmp/.X11-unix/X0
Xorg    1672 root  246u     unix 0xffff880111b21e00      0t0    5993474 @/tmp/.X11-unix/X0
Xorg    1672 root  247u     unix 0xffff880143546180      0t0    6115119 @/tmp/.X11-unix/X0
Xorg    1672 root  248u     unix 0xffff88000aeb30c0      0t0    6120777 @/tmp/.X11-unix/X0
Xorg    1672 root  249u     unix 0xffff88013089da00      0t0    6119223 @/tmp/.X11-unix/X0
Xorg    1672 root  250u     unix 0xffff8801309a5280      0t0    6121614 @/tmp/.X11-unix/X0
Xorg    1672 root  251u     unix 0xffff88000aeb6cc0      0t0    6139354 @/tmp/.X11-unix/X0
Xorg    1672 root  252u     unix 0xffff88010d460000      0t0    6635385 @/tmp/.X11-unix/X0
Xorg    1672 root  253u     unix 0xffff88013095b840      0t0    6659213 @/tmp/.X11-unix/X0
Xorg    1672 root  254u     unix 0xffff88005c96b480      0t0    6661835 @/tmp/.X11-unix/X0
Xorg    1672 root  255u     unix 0xffff88011f350f00      0t0    6710815 @/tmp/.X11-unix/X0
Xorg    1672 root  256u      REG               0,16     4096      22306 /sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-LVDS-1/intel_backlight/brightness

Ich kann einige Anwendungen schließen, zum Beispiel Chrome, und dann kann Viber gestartet werden.

Ich frage mich, ob es normal ist, über 200 Verbindungen für die drei wichtigsten Apps zu haben. Oder schlagen Sie bitte einfach vor, wie sich das Problem lösen lässt.

Beachten Sie, dass ich mein System monatelang ohne Neustart verwenden kann (Suspend/Resume).

Linux Mint 17.3 64-Bit Cinnamon

Antwort1

Ich habe herausgefunden, wie ich das Problem situationsbedingt beheben kann.

Der folgende Befehl gab mir einen Hinweis

$ lsof -U +c 15 | cut -f1 -d' ' | sort | uniq -c | sort -rn | head -3
    382 zenity
    256 dbus-daemon
    212 chrome

Ich habe den Namen des obersten Prozesses übernommen und wenig darüber gelesen. Aus Wikipedia

Zenity ist eine kostenlose Software und ein plattformübergreifendes Programm, das die Ausführung von GTK+-Dialogfeldern in Befehlszeilen- und Shell-Skripten ermöglicht.

zenityDann habe ich Prozesse aufgelistet und nach Schlüssel gefiltert

$ ps axwwu | grep -i zenity
tom       762  0.0  0.2 390752 27476 ?        Sl   Jun06   0:01 /usr/bin/zenity --notification --window-icon /usr/share/icons/gnome/32x32/status/mail-unread.png --text You have new mail
tom      1239  0.0  0.2 390756 27700 ?        Sl   Jun06   0:01 /usr/bin/zenity --notification --window-icon /usr/share/icons/gnome/32x32/status/mail-unread.png --text You have new mail
tom      1249  0.0  0.2 390760 27752 ?        Sl   Jun02   0:01 /usr/bin/zenity --notification --window-icon /usr/share/icons/gnome/32x32/status/mail-unread.png --text You have new mail
...

Aha! Dies bezieht sich auf E-Mail-Benachrichtigungstoasts

$ pidof zenity | wc -w
186

$ killall zenity

$ pidof zenity | wc -w
0

$ lsof -U +c 15 | cut -f1 -d' ' | sort | uniq -c | sort -rn | head -3
    140 chrome
     61 dbus-daemon
     37 skypeforlinux

# lsof -p `pidof X` | tail -n 10
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
      Output information may be incomplete.
Xorg    1672 root   58u     unix 0xffff8801c05221c0      0t0    9714900 @/tmp/.X11-unix/X0
Xorg    1672 root   59u     unix 0xffff8801c0527440      0t0    9715809 @/tmp/.X11-unix/X0
Xorg    1672 root   62u      CHR              13,79      0t0    9540231 /dev/input/event15
Xorg    1672 root   69u     unix 0xffff88031c155280      0t0     175280 @/tmp/.X11-unix/X0
Xorg    1672 root   79u     unix 0xffff880063b103c0      0t0    9243076 @/tmp/.X11-unix/X0
Xorg    1672 root   90u     unix 0xffff880111b22940      0t0    2858278 @/tmp/.X11-unix/X0
Xorg    1672 root   96u     unix 0xffff88000aeb2d00      0t0    9301134 @/tmp/.X11-unix/X0
Xorg    1672 root  113u     unix 0xffff880063b14b00      0t0     939782 @/tmp/.X11-unix/X0
Xorg    1672 root  153u     unix 0xffff880111a47080      0t0    1819503 @/tmp/.X11-unix/X0
Xorg    1672 root  256u      REG               0,16     4096      22306 /sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-LVDS-1/intel_backlight/brightness

# lsof -p `pidof X` | wc -l
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
      Output information may be incomplete.
524

Voilà! Ich kann jetzt andere Apps starten (bis Zenity oder eine andere fehlerhafte App alle verfügbaren Verbindungen belegt).

HINWEIS: Ich muss noch herausfinden, wie ich Zenity daran hindern kann, Verbindungen aufrechtzuerhalten.

Antwort2

Ich glaube, das grundlegende Problem ist die Anzahl der von Xorg erlaubten offenen Datei-Handles. Dieses Problem ist mir kürzlich sogar bei kürzlich gestarteten Anwendungen begegnet, da immer mehr Anwendungen X-Client-Verbindungen herstellen.

Meine Lösung zum Übergeben von Argumenten an Xorg, wenn keine Konfigurationsdateien (/etc) das Übergeben von Optionen an den Server zu unterstützen scheinen, bestand darin, einen neuen Wrapper mit folgendem Inhalt mv /bin/Xorg /bin/Xorg.realzu erstellen :/bin/Xorg

#!/bin/bash

exec /usr/bin/Xorg.real -maxclients 2048 "$@"

Dies sollte funktionieren, da die laufenden Befehlszeilenoptionen jetzt das erhöhte -maxclientsFlag enthalten (standardmäßig 1024).

Eine andere mögliche Ursache, die aber nicht funktioniert:

Meine ältere Lösung [funktioniert nicht] war, das Soft-Open-Dateilimit /etc/security/limits.confvom Standardwert 1024 auf etwa 4096 zu ändern. Beispiel:

* soft nofile 4096

Um diesen Vorteil allen Benutzern zu bieten.

verwandte Informationen