web-dev-qa-db-ja.com

X-Windowにはクライアントの最大数制限がありますか?

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クライアントの最大数は? ですが、それでも私の問題を理解できません。

ありがとう。

2
Tim

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のように表示するアプリです。

3
mosvy