얼마 후 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
Maximum number of clients reached
제르노
$ 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
Maximum number of clients reachedxrestop: Unable to open display!
약간의 조사 후에 나는 이것이 유닉스 소켓의 몇 가지 제한 사항과 관련이 있다는 것을 발견했습니다.
$ 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
일부 출처에서는 사람들이 최대 256개의 X 클라이언트 제한에 대해 이야기하고 있습니다. 다음 명령 출력은 이를 증명하는 것 같습니다.
# 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
Chrome과 같은 일부 애플리케이션을 닫은 다음 Viber를 시작할 수 있습니다.
상위 3개 앱의 연결 수가 200개를 넘는 것이 정상적인지 궁금합니다. 아니면 문제 해결 방법을 제안해 보세요.
재부팅(일시 중지/재개) 없이 몇 달 동안 시스템을 사용할 수 있습니다.
리눅스 민트 17.3 64비트 시나몬
답변1
상황에 따라 해결방법을 알아봤습니다.
다음 명령은 나에게 힌트를 주었다
$ lsof -U +c 15 | cut -f1 -d' ' | sort | uniq -c | sort -rn | head -3
382 zenity
256 dbus-daemon
212 chrome
최상위 프로세스 이름을 얻었지만 그것에 대해 거의 알지 못합니다. 위키피디아에서
Zenity는 명령줄과 쉘 스크립트에서 GTK+ 대화 상자를 실행할 수 있는 프리웨어이자 크로스 플랫폼 프로그램입니다.
그런 다음 프로세스를 나열하고 zenity
키별로 필터링했습니다.
$ 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
...
아하! 이메일 알림 토스트와 관련된 내용입니다.
$ 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
바라보다! 이제 다른 애플리케이션을 시작할 수 있습니다(zenity 또는 다른 버그가 있는 애플리케이션이 사용 가능한 모든 연결을 사용할 때까지).
노트. 여전히 열정을 막고 연결을 유지하는 방법을 알아내야 합니다.
답변2
근본적인 문제는 Xorg가 열 수 있는 파일 핸들의 수라고 생각합니다. 최근에 시작한 응용 프로그램에서도 이 문제가 발생했습니다. 점점 더 많은 응용 프로그램이 X 클라이언트 연결을 만들고 있기 때문입니다.
구성 파일(/etc)이 서버에 대한 옵션 전달을 지원하지 않는 것처럼 보일 때 Xorg에 매개변수를 전달하기 위한 내 솔루션은 다음 내용으로 mv /bin/Xorg /bin/Xorg.real
새 래퍼를 만드는 것 입니다./bin/Xorg
#!/bin/bash
exec /usr/bin/Xorg.real -maxclients 2048 "$@"
이제 실행 중인 명령줄 옵션에 -maxclients
기본값인 1024에서 증가된 플래그가 포함되어 있으므로 이는 작동합니다.
또 다른 잠재적인 이유가 있지만 작동하지 않습니다.
내 오래된 솔루션 [작동하지 않습니다]는 /etc/security/limits.conf
소프트 오픈 파일 제한을 기본 1024에서 약 4096으로 변경하는 것입니다. 예를 들어:
* soft nofile 4096
모든 사용자에게 이 혜택을 제공하세요.