저는 openSUSE Tumbleweed 설치를 실행하는 KDE Plasma 5.4.3을 사용하고 있습니다. 저는 꽤 많은 프로그램(Eclipse, Firefox, Slack, Evolution, Konsole, 다양한 Java 앱)을 사용하는 편인데 시간이 지나면 더 이상 새 프로그램을 열 수 없습니다.
Maximum number of clients reachedxlsclients: unable to open display ":0"
어떤 프로그램이 오류를 일으키는지 확인할 수 없습니다. 작업시 xlsclients
20~30개 정도의 프로그램이 표시되는데 , 정확한 정보가 표시되지 않는 것은 아닐까 의심됩니다.
이 문제를 디버깅하고 어떤 프로그램이 오류를 일으키는지 알아내려면 어떻게 해야 합니까?
답변1
xlsclients
나에게 많은 것을 말하지 않았습니다 xrestop
. 이 문제를 연구하는 사람들이 쓴 대부분의 기사는 다음을 찾는 데 중점을 둡니다.모두유닉스 소켓을 엽니다. 그러나 lsofc -c Xorg
조언이 훨씬 좋습니다.
그러나 이제 ss
해당 정보를 더 직접적으로 얻을 수 있습니다. 이 명령은 Xorg에 연결된 Unix(로컬) 소켓을 표시합니다.
sudo ss -x src "*/tmp/.X11-unix/*"
사용자 환경에서 작동하도록 하려면 필터 섹션을 실험해야 할 수도 있습니다. 개별적으로 실험하여 sudo ss -x
모든 것을 확인하고 거기에서 필터링해 보세요.
ss
소스 애플리케이션을 식별하는 방법(예: 이 작업)을 찾을 수 없지만 lsofc
일부 파이프를 사용하면 식별할 수 있습니다.
sudo ss -x src "*/tmp/.X11-unix/*" | grep -Eo "[0-9]+\s*$" | while read port
do sudo ss -p -x | grep -w $port | grep -v X11-unix
done | grep -Eo '".+"' | sort | uniq -c | sort -rn
출력은 다음과 같습니다.
8 "slack"
8 "code"
7 "brave"
5 "kded5"
2 "kwin_x11"
2 "ksmserver"
2 "kscreen_backend"
1 "zoom"
1 "zim"
:
"최대 클라이언트 도달" 문제가 발생하는 동안 이 명령을 실행하면 이 검색에는 256개의 클라이언트 목록이 표시됩니다. 그래서 저는 이것이 범인을 찾는 데 적합한 도구라고 확신합니다.
ss
다음 페이지에서 자세한 정보를 확인할 수 있습니다.
대략적인 스크립트 줄의 주석 처리된 버전은 다음과 같습니다.
sudo ss -x src "*/tmp/.X11-unix/*" | # List X11 sessions
grep -Eo "[0-9]+\s*$" | # extract the port number
while read port ; do # For every connected port
sudo ss -p -x | grep -w $port | # Find the connecting process
grep -v X11-unix # but ignore the x11 side
done | grep -Eo '".+"' | # extract process names
sort | uniq -c | # Count the number of repeats
sort -rn # And sort them descending by count