1 Linux のデフォルトのコア ファイル サイズは 0 です
コア ファイルとは何ですか? プログラムがクラッシュすると、プロセスのストレージ イメージがプロセスの現在の作業ディレクトリにあるコア ファイルにコピーされます。コア ファイルは単なるメモリ イメージ (およびデバッグ情報) であり、主にデバッグに使用されます。コア ファイルはバイナリ ファイルであり、プログラムがクラッシュしたときにメモリ イメージを分析するには、対応するツールを使用する必要があります。
システムのデフォルトのコア ファイル サイズは 0 であるため、コア ファイルは作成されません。 ulimit コマンドを使用すると、コア ファイルのサイズを表示および変更できます。
$ulimit -c
0
$ ulimit -c 1000
$ulimit-c
1000
-c はコア ファイル サイズの変更を指定し、1000 はコア ファイル サイズを指定します。次のように、コア ファイルのサイズに制限を設定しないこともできます。
# ulimit -c 無制限
#ulimit -c
無制限
変更を永続的に有効にしたい場合は、構成ファイルを変更する必要があります
Vim /etc/profile で:
ulimit -S -c 0 > /dev/null 2>>
着替える
ulimit -S -c 1000 > /dev/null 2>>
参照: http://hi.baidu.com/jrckkyy/blog/item/2562320a5bdbc534b1351d95.html
2 Linux のオープン ファイルと最大ユーザー プロセスのデフォルト値は 1024 です
#ulimit -n
1024
#ulimit –u
1024
問題の説明: 説明 サーバーは同時に 1024 個のファイルしか開くことができず、1024 個のユーザー プロセスを処理します。
現在のシステムのすべての制限値を表示するには ulimit -a を使用し、開いているファイルの現在の最大数を表示するには ulimit -n を使用します。
新しくインストールした Linux にはデフォルトで 1024 しかありません。負荷の高いサーバーとして使用すると、開いているファイルが多すぎるというエラーが発生しやすくなります。したがって、それを大きくする必要があります。
解決:
ulimit –n 65535 を使用してすぐに変更しますが、再起動後は無効になります。 (ulimit -SHn 65535 は ulimit -n 65535 と同等、-S はソフト、-H はハードを意味することに注意してください)
変更方法は 3 つあります。
1. /etc/rc.local に ulimit -SHn 65535
という行を追加します。
2. /etc/profile に ulimit -SHn 65535
という行を追加します。
3. /etc/security/limits.conf の末尾に以下を追加します。
*ソフトノファイル65535
*ハードノファイル65535
* ソフト nproc 65535
*ハード nproc 65535
具体的にどれを使用すればよいでしょうか? 最初の方法は CentOS では効果がありません。3 番目の方法は効果があります。2 番目の方法は Debian では効果があります。
# ulimit -n
65535
# ulimit -u
65535
注: ulimit コマンド自体にはソフト設定とハード設定があります。ハードの場合は -H を追加し、ソフトの場合は -S を追加します。デフォルトの表示はソフト制限です。
ソフトリミットは、現在のシステムに有効な設定値を指します。ハード制限値は、一般ユーザーが下げることができます。しかし、それを増やすことはできません。ソフト リミットはハード リミットより高く設定することはできません。 root ユーザーのみがハード制限値を増やすことができます。
3 TIME_WAIT 状態の接続が多数あることが判明しました
問題の説明: time_wait 状態の接続が大量に見つかり、場合によっては 7000 を超えることもありました
netstat -n | awk '/^tcp/ {++state[$NF]} END {for(状態のキー) print key,"t",state[key]}'
さらに time_wait 接続を検索する
netstat -n|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n20
DBサーバーのmysqlとmemcacheが解放されていないことが判明しました。
解決策: 多数の TCP 接続を使用するアプリケーションの場合、/etc/sysctl.conf のパラメーターもそれに応じて最適化する必要があります。
vim /etc/sysctl.conf
ファイルを編集し、次の内容を追加します。
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
次に、/sbin/sysctl -p を実行してパラメータを有効にします。
最適化:
大量の TIME_WAIT が存在しなくなり、mysql プロセスの占有率が急速に低下したことが判明しました。
上記では、nginx サーバー システムの最適化についてその側面も含めて紹介しましたが、PHP チュートリアルに興味のある友人に役立つことを願っています。