X-Windowにはクライアントの最大数制限がありますか?
たとえば、ウィンドウを使用して「無制限」の数のエビデンスプロセスを作成できますか?そうでない場合、何が制限を課しますか?
別の例として(以下の例としてワインクライアントを使用しますが、答えはXクライアントがワインに関連しているかどうかによって異なる場合があると思います)、Lubuntu 18.04
$ evince my.pdf
Maximum number of clients reachedUnable to init server: Could not connect: Connection refused
Cannot parse arguments: Cannot open display:
$ wine PDFXCview.exe my.pdf
047d:fixme:ver:GetCurrentPackageId (0x32fbc4 (nil)): stub
Maximum number of clients reached047d:err:winediag:x11drv_init_thread_data x11drv: Can't open display: :0. Please ensure that your X server is running and that $DISPLAY is set correctly.
いくつかのウィンドウ(.exeプログラムのウィンドウまたはevinceウィンドウ)を閉じた後、新しいウィンドウ(他のPDFファイル用)を開くことができます。
.exeプログラムを使用して102個のウィンドウを開き、5個のウィンドウを開くようにしました。 Xサーバーにはウィンドウが多すぎませんか?どうすれば問題を解決できますか?
最大数の制限を引き上げることはできますか?クライアントの数を制限する構成設定はありますか?どうすれば再構成できますか?
私は読んだ https://askubuntu.com/questions/4499/how-can-i-diagnose-debug-maximum-number-of-clients-reached-x-errors そして 何xクライアントの最大数は? ですが、それでも私の問題を理解できません。
ありがとう。
xorg.conf(5)
から:
_SERVERFLAGS SECTION ... Option "MaxClients" "integer" Set the maximum number of clients allowed to connect to the X server. Acceptable values are 64, 128, 256 or 512.
_
そしてXserver(1)
から:
_-maxclients 64|128|256|512 Set the maximum number of clients allowed to connect to the X server. Acceptable values are 64, 128, 256 or 512.
_
デフォルトは256ですが、Xサーバーの最近のバージョンでは2048に上げることができます。
_./include/misc.h:#define MAXCLIENTS 2048
./include/misc.h:#define LIMITCLIENTS 256 /* Must be a power of 2 and <= MAXCLIENTS */
./os/osinit.c:int LimitClients = LIMITCLIENTS;
_
詳細については、 _dix/dispatch.c
_ のNextAvailableClient()
および _os/connection.c
_ のAllocNewConnection()
を確認できます。
多くのLinuxディストリビューションでは、これを使用してクライアント制限を512に設定できます。
_# printf 'Section "ServerFlags"\n\tOption "MaxClients" "512"\nEndSection\n' \
> /etc/X11/xorg.conf.d/99-maxclients.conf
_
非常に大きな_Xorg.wrap
_でXorg
バイナリ(_-maxclients
_ではなく実際のバイナリ)を実行しようとすると、そのオプションでサポートされている値がわかります。
_/usr/lib/xorg/Xorg -maxclients 1000000000
...
(EE) maxclients must be one of 64, 128, 256, 512, 1024 or 2048
_
ディスプレイに実際に接続されているクライアントの数は、_X-Resource
_拡張子を介して取得できます。 xrestop
は、それを使用してX11クライアントとそれらが使用しているリソースをtop
のように表示するアプリです。