ホームページ  >  記事  >  バックエンド開発  >  nginxサーバーシステムの最適化

nginxサーバーシステムの最適化

WBOY
WBOYオリジナル
2016-08-08 09:32:57973ブラウズ

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 チュートリアルに興味のある友人に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。