CentOS 5.9 |オペレーティングシステムプログラムがポートをリッスンしているため、ポートはバインドされません。

CentOS 5.9 |オペレーティングシステムプログラムがポートをリッスンしているため、ポートはバインドされません。

私のCentOSシステムで実行されているゲームサーバーはポート28960にバインドされていますが、ゲームサーバーを再起動するとポートが使用中であるため、ポートをバインドできないというメッセージが表示されます。しかし、これはサーバーが再起動されたためです。港が閉まっていませんか?プログラムがリッスンしているかどうかを確認し、そうでない場合は、ポート28960でサーバーのバックアップを開始できるようにポートを消去するにはどうすればよいですか?

ベストアンサー1

会うことができると思います。2*MSLの問題。あなたはこう言うことができます:

$ netstat -na | grep 28960.*TIME_WAIT

ここで情報を取得すると、これは、カーネルのネットワークスタックがポートの再バインドを許可する前に偽のパケットが表示されるまで、最大セグメント寿命(MSL)の2倍を待っていることを意味します。TIME_WAITは良いです。

通常動作中に再起動したいサーバは、TIME_WAIT以下の設定で処理を無効にしました。SO_REUSEADDRアウトレットオプション。ゲームサーバーのドキュメントを見ると、この動作を有効にするオプションがあります。

それ以外の場合、ゲームサーバーを変更するためのソースを取得できない場合、唯一のオプションはステータスが期限切れになるのを待つTIME_WAITことです。これは通常30〜120秒かかります。

showwaitこの種の作業に役立つスクリプトは次のとおりです。

#!/bin/sh
while [ true ]
do
    netstat -na | grep WAIT
    sleep 1
done

実行し、1秒あたりのライン出力が停止するのを待ちます。Ctrl-Cその後、待機状態を必要としない作業を続行できます。

このスクリプトは、継続的に待機している忙しいサーバーでの使用には適していません。ただし、サーバーを待っていて他に何も起こらない場合に適しています。

おすすめ記事