- The added line is THIS COLOR.
- The deleted line is THIS COLOR.
#topicpath
*OpenBSDでhttpdをスケールさせる [#v19f2374]
RIGHT:川俣 吉広 ~
EBUG勉強会 @ 新潟, 2014/11/15
**発端 [#wdbc1063]
以前この勉強会で紹介したウェブ/メルマガのサーバが、アクセス過多によりトップページが見れなくなっているという報告を受ける。
- トップページが「500 Internal Server Error」を表示していることを確認。
- SSHでログインし、状況調査
-- httpd (Apache) の error_logを確認
---子プロセスが起動できなくなっている。
[Mon Nov 3 15:15:51 2014] [error] [client xxx.xxx.xxx.xxx] (35)Resource temporarily
unavailable: couldn't spawn child process: /var/www/docs/pub/index.cgi
---静的なページは正常にアクセスできる
---ロードアベレージは、1時間平均で0.8~1.0, 瞬間最大で7~8程度
---CPU usageはピークで85%程度
---スワップは0MB … 起動から一回も使われていない。
---ネットワークのスループットは10Mb/sを少しえる程度。
- ... CPU, メモリなどのリソースは枯渇していないが、プロセスの起動数になんらかの制限がかかっている。
- ... サーバは2台が並列稼動しているが、両方とも同様な状況。
**応急対応 [#n2f7a8d8]
- index.cgi を index.html に変更 ~
→ User Agent によって、ケータイ端末をリダイレクトしていた。
- 以下のように設定値を変更し、httpdを再起動
/etc/login.conf
default:\
:path=/usr/bin /bin /usr/sbin /sbin /usr/X11R6/bin /usr/local/bin:\
:umask=022:\
:datasize-max=512M:\
:datasize-cur=512M:\
:maxproc-max=256:\
:maxproc-cur=128:\
:openfiles-cur=128:\
:stacksize-cur=4M:\
:localcipher=blowfish,6:\
:ypcipher=old:\
:tc=auth-defaults:\
:tc=auth-ftp-defaults:
# www - resource definition for web processes
#
www:\
- :maxproc=512:\
+ :maxproc-max=384:\
+ :maxproc-cur=384:\
:tc=default:\
設定をチェックした段階では、defaultログインクラスではmaxproc-max, maxproc-curがそれぞれ
指定されているのに対し、wwwログインクラスではmaxproc指定のみのため、プロセス最大数の設定数が
上書きされているかどうか不明だったため、maxproc-max, maxproc-curを用いる設定に書き直した。
/var/www/conf/httpd.conf
# It is intended mainly as a brake to keep a runaway server from taking
# the system with it as it spirals down...
#
-MaxClients 256
+MaxClients 192
プロセス数の上限で制限がかかっていると仮定し、httpdのプロセス数を減らすことで
子プロセス(*.cgi)の数を増やせるようにした。
→ 30分ほどで不合は解消
- アクセスそのものが減少し
- 上記対策が効を奏した(かどうか、本当は不明)
**恒対策 [#o48c211b]