一覧 検索 最終更新 改名 | ヘルプ | 最終更新のRSS |

memo/鯖 のバックアップ差分(No.1)


 *鯖
 
 nothing 鯖の設定とか云々書き連ねます。最近負荷がが hidoi 状況なのです。うひー。~
 最近突然サーバーが止まりますが、予告なしでメンテしてます。すんません。
 
 #contents
 
 **環境
 設置場所が鹿児島って時点で負け組気分です。ヤッタネ。
 
 ***回線
 NTT西日本 Bフレッツ ベーシック (speedtest.flets で 51Mbps しか出ません)~
 %%ぷらら + ダブルルート (IIJ) 固定IP (219.119.223.38)%%~
 CyberBB 固定IP (43.244.234.52) -- 3/18〜
 
 ***サーバスペック
 |CPU|Pentium 4 (Northwood/FSB533) 2.8GHz|
 |RAM|PC2700 1GB|
 |HDD|ST380011A * 2|
 
 ***状況
 -PHP + PostgreSQL なページに数十万リクエスト/day
 -PHP + MySQL なページに数万リクエスト/day
 -数〜数十MBのデータファイル配信 (mp3 や BMS)
 -その他普通のレンタルサーバとかでやりそうなこと( Perl CGI とかとか )
 -7ドメイン + 数十サブドメイン
 
 あー。あとDNSとメールと ...
 
 -%%Load Average が 1 切りません%% 昼間は切るようになりました
 -多分メモリ 1GB じゃ足りない気がします。
 
 **現在の設定
 
 設定とかちょっと主なところだけ。~
 今は vmstat やら top やら見つつちまちま調整してます。
 
 ***sysctl.conf
  kernel.sysrq=0
  kernel.shmmax=133554432
  kernel.core_uses_pid=1
  net.core.rmem_max=1048576
  net.core.wmem_max=1048576
  net.core.rmem_default=65535
  net.core.wmem_default=65535
  net.ipv4.ip_forward=1
  net.ipv4.conf.default.rp_filter=1
  net.ipv4.tcp_syncookies=1
  net.ipv4.tcp_rmem=4096 87380 1048576
  net.ipv4.tcp_wmem=4096 16384 1048576
  net.ipv4.tcp_mem=1048576 1048576 1048576
 
 ***httpd.conf
  # 普通のコンテンツではやっぱ KeepAlive 必要だわ
  KeepAlive on
  MaxKeepAliveRequests 32
  KeepAliveTimeout 3
  # 最初から臨戦態勢
  MinSpareServers 160
  MaxSpareServers 160
  StartServers 160
  MaxClients 160
 
 ちなみに KeepAlive は feena では切ってます。(画像少ないし、残しておくと接続数不足で死ぬんで) あとは mod_gzip やら mod_limitipconn (主に mp3 とか BMS 配信向け)やら入れたり。
 
 MaxClients はこれ以上増やすとスワップで死にます。 (feena アクセスで、 Apache プロセスと同時に PostgreSQL プロセスも増えることを考えれば当然)
 
 ***php.ini
 PHP Accelerator インストールして設定済み
  #接続数不足で死ぬので、強制 Off
  mysql.allow_persistent = Off
  pgsql.allow_persistent = Off
  pgsql.max_links = 64
 
 この程度かなぁ
 
 **作業とかとか
 
 この辺は思い出しつつ。
 
 -マシンスペックの改善~
 Celeron 2GHz から Pen4 2.8GHz へ。ヘボいメモリも交換。 45k 円の出費 _| ̄|○
 
 -Squid~
 Squid をインストール。 HTTP アクセラレータモードに設定して、Apache の mod_rewrite でローカル以外の接続を squid ポートへ転送するように設定。~
 とりあえずこれで Squid が転送バッファとして働くので、エンドユーザの回線が細くても Apache のプロセスを握り続けることは防げる。資源節約。
 
 -PHP Accelerator~
 http://www.php-accelerator.co.uk からダウンロード、 INSTALL ファイルに書かれてる通りにインストールするのみ。[[結果:http://nothing.sh/diarylog/phpa.txt]] 速くなる模様。
 -Apache2 +PHP インストール~
 VineSeed から Apache2 の RPM 持ってきてインストール。結局 PHP インストールするには prefork しか使えない。 /usr/sbin/apache2 のリンク先を /usr/sbin/apache2.prefork に書き換え。~
 それから、 PHPA がエラーを吐くので php.ini で phpa.shm_user と phpa.shm_group を設定してやる。
 -プロバイダ変更(PPPoE 複数セッション)~
 IIJ バックボーンはなんか帯域制限されてるので(上り8Mbps程度しか出ない)~
 …って、コレじゃBフレッツベーシックの意味ねぇよ。ってなわけで変更しました。~
 ちょっと頑張れば 30Mbps 以上程度は出るかな、って感じ。
 
 ***Apache2 → Apache1 に戻す (2004-03-20 (土) 03:36:49)
 
 時々 Apache のプロセスが暴走してメモリを食い尽くす…その所為で Load Average が 60 越え _| ̄|○
 
 原因を色々探ってて、とりあえず PHP Accelerator が Apache の error_log に大量に notice メッセージを残してたり。
 あんまり関係ないかも知れないけど気持ち悪い。公式サイトの Forums も "me too" だらけで結局解決策はない模様。
 
  [Thu Mar 18 09:18:08 2004] [notice-phpa] Acquiring cache : uid 48 gid 48 perms 666 (pid 29628)
  [Thu Mar 18 09:18:08 2004] [notice-phpa] PHPA 1.3.3r2 on linux_i686_glibc2.1.3 (pid 29628)
  [Thu Mar 18 09:18:08 2004] [notice-phpa] Initialised 16MB cache at 0x40dbc000 with 512 process entries (pid 29628)
  [Thu Mar 18 09:18:08 2004] [notice-phpa] Lock thresholds 10/10 (pid 29628)
  [Thu Mar 18 09:18:08 2004] [notice-phpa] Acquiring cache : uid 48 gid 48 perms 666 (pid 29628)
  [Thu Mar 18 09:18:08 2004] [notice-phpa] PHPA 1.3.3r2 on linux_i686_glibc2.1.3 (pid 29628)
  [Thu Mar 18 09:18:08 2004] [notice-phpa] Initialised 16MB cache at 0x40dbc000 with 512 process entries (pid 29628)
  [Thu Mar 18 09:18:08 2004] [notice-phpa] Lock thresholds 10/10 (pid 29628)
  [Thu Mar 18 09:18:08 2004] [notice-phpa] Acquiring cache : uid 48 gid 48 perms 666 (pid 29628)
  [Thu Mar 18 09:18:08 2004] [notice-phpa] PHPA 1.3.3r2 on linux_i686_glibc2.1.3 (pid 29628)
  [Thu Mar 18 09:18:08 2004] [notice-phpa] Initialised 16MB cache at 0x40dbc000 with 512 process entries (pid 29628)
  [Thu Mar 18 09:18:08 2004] [notice-phpa] Lock thresholds 10/10 (pid 29628)
 
 しかもログに残る時間は一定。他のログは時間進んでるのに、このメッセージだけずっと同じ時間で表示されてるのでログが過去に戻ってる気分。
 
 とりあえず色々 Apache 2.0.48 がダメくさいので Apache 1.3.29 に戻す。どうせ prefork しか使えないし、メモリ食うみたいだし。
 …と、折角苦労してインストールした Apache2 を止めて、 service httpd start
 
 しばらくして、何かパケロスするようになった。あーもー、プロバイダ不調? とか思ってたら、何か /var/log/messages に
  Mar 20 02:34:44 evergreen kernel: ip_conntrack: table full, dropping packet.
  Mar 20 02:34:44 evergreen last message repeated 9 times
  Mar 20 02:34:49 evergreen kernel: NET: 310 messages suppressed.
  Mar 20 02:34:49 evergreen kernel: ip_conntrack: table full, dropping packet.
  Mar 20 02:34:54 evergreen kernel: NET: 211 messages suppressed.
  Mar 20 02:34:54 evergreen kernel: ip_conntrack: table full, dropping packet.
 
 なんじゃこりゃーーー。アタックでも受けてるのか !? と思って色々やってみる。無駄に chkrootkit も掛けてみる。何も無し。
 
 結局、 Apache2 になってから IP 設定した feena.jp の squid 転送で
 
 >
 +誰かが feena.jp へリクエスト
 +(IPを見て)ローカルからの接続じゃないので feena.jp:81 にリダイレクト
 +feena.jp:81 (squid サーバ) にリクエスト
 +squid が Apache にリクエスト
 +(IPを見て)ローカルなのに外部と勘違いして feena.jp:81 へリダイレクト
 +3に戻る
 
 DoS 状態 _| ̄|○ ばかー
 
 w3m が賢く "リダイレクトループだよ" と警告してくれたので発見しました。うひゃー。
 
 
 ***Squidは (2004-03-22 (月) 03:13:55)
 10MB 単位の大きいファイルには向かない…。
 
 何か転送途中で突っかかってしまう。そーなるとユーザー側はリロードの嵐。余計負荷が。勉強になった。
 
 あと何か知らないけど CPU 食いまくり。そーゆーもん?
 

(HTML conversion costs 0.013 sec.)