そうか、メモリーか

結局 MaxClients を減らすと通常時でもコネクションが足りないという……

どうしたものかと思っていたら、phpのメモリー制限を、移行時のアップロード制限を緩和するために128Mに上げてったのでした。
そりゃ巨大なプロセスが上がるわね。

で、
/etc/php.ini

memory_limit = 8M      ; Maximum amount of memory a script may consume

戻してみる。どうでしょう?

apache チューニング

やっぱり更新するとロードアベレージがすごいのでー。

次に疑ったのはhttpdのプロセス数。100超えしているので。
とりあえず生存時間を短くすべく最大接続回数を制限してみる

/etc/httpd/conf/httpd.conf

MaxClients       100
MaxRequestsPerChild  400

MaxClients       80
MaxRequestsPerChild  100

GNU Screen 設定 (.screenrc)

10年ぐらい前はscreen使ってたんだけど、漢字コード(当時)通らなかったりして微妙に使いにくかったので、何となく使うのをやめて今に至るのですが。

昔から設定で何とかなってたのかもしれないけど、不満を感じている部分は.screenrcを書くと解消される事がわかったので、遅ればせながら設定。

defutf8 on
defkanji UTF-8
defencoding UTF-8
encoding UTF-8 UTF-8
defscrollback 10000
autodetach on
startup_message off
caption always "%n %t %= %{=b wk} %{=s wb}%y/%m/%d %{=s wb}%02c"
bind ^e encoding eucJP UTF-8
bind ^u encoding UTF-8 UTF-8
bind ^w encoding SJIS UTF-8
bind ^j encoding jis UTF-8

1〜4行目:文字コード関連(使用するシステム/ユーザのロケールに合わせる)

5行目:スクロールバッファサイズ

6,7行目:起動時の著作権表示を抑止し、ターミナルが切断されたときに自動デタッチする

8行目:キャプション行。これが出ていることでscreen起動中であることを認識できるように(よく起動忘れがあるので)。Window番号/名称を表示して今どのウィンドウが開いてるかを識別できるように(頻繁にわからなくなるので) したのと、左端に日時を表示。日時表示は気がつかない間にラインが切れていても認識できるようにおまけ表示として。

9〜12行目:漢字コード変換指定をキーストロークで指定できるように指定。eucJPとUTF-8のホストが混在しているのと、RT58iがSJISなので。

とりあえず当面はこんな感じで。

MySQLチューニング

結局MySQLのプロセスがいっぱいメモリーをとってスラッジングしているのが原因のような気がする。
ので、例によって適当にチューニング。

以下を /etc/my.cnf に挿入

# Tuning Memory Usage
innodb_buffer_pool_size=512M
innodb_additional_mem_pool_size=20M
innodb_log_buffer_size=16M
innodb_log_file_size=128M
sort_buffer_size=2M
read_rnd_buffer_size=1M
join_buffer_size=256KB
read_buffer_size=1M
key_buffer_size=256M
myisam_sort_buffer_size=1M
net_buffer_length=16384
max_connections=100
innodb_log_files_in_group=2

install Bundle::CPAN on CentOS5.5 が失敗する件の解決方法

先ほどサーバーをリブートしたらtiarraが動かなくなったので、cpanにて、Scalar::Util を強制再インストールして、PPからXSにしたんですが。

そのときにCPANが install Bundle::CPAN してねーと言ってきたので指示通りインストールしようとしたら

Recursive dependency detected:
    ExtUtils::MakeMaker
 => M/MS/MSCHWERN/ExtUtils-MakeMaker-6.56.tar.gz
 => File::Spec
 => S/SM/SMUELLER/PathTools-3.33.tar.gz
 => File::Path
 => D/DL/DLAND/File-Path-2.08.tar.gz
 => File::Spec.
Cannot continue.

とか出る問題。
結局調べた結果、cpanを起動してから install Bundle::CPAN するのではなく、

perl -MCPAN -e 'install( q{Bundle::CPAN} )'

とperlに直接モジュールを読み込ませてアップデートするとよい模様。
原理はよくわかってない。

(via http://blog.laufeyjarson.com/2009/06/recursive-dependencies-in-cpan/ の コメント)

何かメモリーリークしてた?

よくよく見てるとすごくswapが消費された状態だったので、いったんリブートしてみた。

どうかしら?

っていうか、別の問題として、shutdown -r new だと起動途中で止まってしまうっぽく、さくらさんにリセットコールしなきゃいけなかったのと、tiarraが

weaken is only available with the XS version of Scalar::Util at main/ModuleManager.pm line 12

というエラーで起動しない問題があるのだけれど。

apacheのチューニング

今までは、さくらの専用サーバエントリーのデフォルトというか、おそらくCeontOS4のデフォルト値のまま運用してきてたのですが。

ググルさんのクローラーがきたときとかはともかく、POST時にものすごくロードアベレージが上がるのでどうしようかと。

大名管理者的にはメモリとCPUの大きなメニューに変更するか、機能を分散配置するんだろうけど。さくらのVPSが逆引きできればいくつかのサーバに分散してもやすくなるんだけど、とりあえず現状では無理だし、どうしようかと。

で、とりあえず、今までデフォルトのまま運用していたapacheのパラメタを見直そうかと言うことで。

/etc/httpd/conf/httpd.conf
変更前:

KeepAlive Off
MaxKeepAliveRequests 100
KeepAliveTimeout 15
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  4000

変更後:

KeepAlive On
MaxKeepAliveRequests 50
KeepAliveTimeout 10
ServerLimit      100
MaxClients       100
MaxRequestsPerChild  400

変更後の数字は適当。本当はちゃんと計算すべきな気もする。とりあえず運用して具合を見ようかと。

sambaにおけるWINS運用メモ

PPTPで外出先からおうちのNASをみたい!プロジェクトが進展しましたですよ。

いや、まだゴールでないのは弱いが。

PPTPで同じアドレスブロックに割り振られているので、ブロードキャストが通るのかと思ったら、そんなことはなく、NetBIOS名解決ができていないという課題を解決すべく。LMHOST書けばいいんだろうけど、ちょっとやってみてうまくいかなかったのと、個人的に静的設定をできるだけしたくない(移行時に忘れる)ので、WINSを上げようと。

で、NAS(LS-QL)の実装は結局sambaだし、WINS担ったりしないかしらと思ったら、そんなオプションはなく。

結局1つVM作って、そこのnmbdを設定することに。OSはCentoOS5.3(設定がうまくいったら、それを踏襲して、netbookで展開しようかと)

  • まず、RT508iのDNSとDHCPに固定IPを設定
  • /etc/samba/smb.confに以下の内容を設定(GUIでは設定できなかった)
    [global]
    workgroup = fairies
    server string = Samba Server Version %v
    interfaces = eth0
    bind interfaces only = yes
    local master = yes
    preferred master = yes
    os level=65
    wins support = yes
    dns proxy = yes
    

    (interfaces周りは不要な気もするけど、一応)

  • RT508iのDHCP設定でWINSのアドレスも配布するよう変更
  • RT58iにて、外出先PCに割り当てられるアドレスに対して、
    LANインタフェースのすべてのパケットを通過するように
    フィルターを書く(たぶんいらない気はするけど、念のため)

で、無事にマスターブラウザーになるか、と思ったらNASがマスターブラウザーのままなのですよねー。そしてWINSにも登録されない……

で、よく設定画面を見たら、NASのほうは、DHCPで配られたWINSは無視して、別途手動でWINSを書いてやらないとだめ、でした。(まあ、考えてみたら中身Linuxだし当然ですね)

これで、外からファイルサーバーが見えるようになって、共有フォルダーの中身も見えるようになった。

外部PCからファイルをNASに置くのは成功したんだけど、NASからファイルを吸い上げようとすると、フォルダーウィンドゥがハングアップするのだよねえ……。何らかのパケットが通ってないのかなあ……