#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]


Front page   New Page list Search Recent changes   Help   RSS of recent changes