サーバを管理するようになって半年の経過報告的メモ

同僚の退職にともなって、彼がしていたサーバの管理を引き継ぎ早半年。 未だ完璧初級者のおいらがこんなに泥縄で業務やってていいんだろうかと思いつつも、後任が入るないしは外注するという話もないし殆ど首っ引きでいろいろ試しているところ。最近は少し糸口がつかめてきたし、プログラムの対応含めて徐々に冗長性を確保できるような構造になりつつあるので、今の2サーバ体制(APサーバとDBサーバ)でどこまでアクセスを捌けるか!というチキンレースみたいな状況からはそのうち抜け出せるんじゃないかと期待。あくまで期待。とりあえず近日中に静的ファイルの分散およびAPサーバのI/O対策を目的としてリバースプロキシを導入できる…はず。まだ、Symfonyのプラグインに関する問題が解決できてないけど。 リバースプロクシの内側で Location: ヘッダーの http/https を書き換えたい – 音ログのヒント

続きを読む

【メモ】 memcachedへの割り当てとメモリの管理

メモリの容量を気にしてmemcachedの割り当てをかなり絞ってたんだけど、結果的にはmemcachedの割り当てを増やしたらメモリの使用量が安定した。現在の設定は、総メモリ8GBに対してmemcachedが2GB割り当てられている感じ。3GBまでなら行けそうな気がするけど、とりあえず安定してるので様子見。 要するにmemcachedの割り当てを絞って節約した気になってたけど、キャッシュ溢れ分をアプリケーションがカバーする時に消費するメモリの方がよっぽど多くて、それだったら思い切って割り当てて溢れにくくした方が全体の消費量は抑えられる、と。考えてみれば当然のことなのだけど、なんとなく目先の設定値に引きずられてその辺の考慮が足りなかった。 もちろん割り当てを増やせば増やすほど良いということではなくて、アプリケーションのメモリ消費との兼ね合いもあってswapしちゃったら元も子もないし、その辺はバランス。現状ここで書いている環境について言えば、アクセスが集中してもメモリ8GBを正常に動作しているアプリケーションで使い切るのはほとんど無いので、ある程度がっつり割り当てつつ、アプリケーションのメモリ消費などを見直していくのがよいかなと。 ちなみに今のところmemcachedはあくまでキャッシュサーバとして使用していて、高速ストレージとして使用しているわけではないので永続性を気にする必要はないけれども、逆に言えばそういうのは全部MySQLに投げている状態なのでそのうち無理が来るかも。TokyoTyrantを利用して例えば更新クエリはMySQLに投げるけれども、選択クエリはTokyoTyrantに投げるとか言うようにするとパフォーマンスが改善出来る&重い更新クエリが発行されてもパフォーマンスに影響しないと言うのが実現できるかも知れないなーとか。

続きを読む

【メモ】 CentOSでマウント

サーバ作業でネットワーク接続されたサーバ(例えば192.168.0.2)を使って作業したいと思ったときに、使用ディレクトリを作業するサーバにマウントしてやると便利っぽい。マウントって言うとそういえば仮想ドライブ環境でよく使うけど、要はネットワークドライブみたいなもんか。 参考になるエントリはたくさんあって、ファイルシステムとかまぁ知ろうと思えば色々あるんだけども、とりあえずは以下のコマンドで実行できた。

mount 192.168.0.2:/path/to/hogehoge /usr/www/mnt/hogehoge
これで、192.168.0.2のhogehogeというディレクトリが、/usr/www/mnt/hogehogeとして作業サーバに配置される。現在マウントされているデバイスを確認するときはmount。アンマウントするときは、これだけ。
umount /usr/www/mnt/hogehoge
非常に、便利。

続きを読む

【PHP】 考えてみたらPHPのmemory_limitは負荷軽減に関係ないな

2. PHPのメモリ割り当てを変更した いくらメモリに余裕あってもさすがにそんなに割り当てる必要はないだろJK…ということで減らした。
memory_limit = 32M ← 変更前:256M
 
先日、某サーバがいっぱいいっぱいになって突貫対応したんだけど、そのときついでにPHPのメモリ制限をきつめに変更した。んで、今日色々と調べてたら更新系のスクリプトがいくつか動いて無くて、結局メモリ食い過ぎるためだということが判明。

続きを読む

clamscanの件について

clamscanをよく調べたら、clamscan自体はディスクのウィルススキャンということらしい。で、その実行用シェルがcron.dailyに置かれている(そのシェルの中でデータの更新も行われている)と言うことは、毎日1回ウィルススキャンをするよということだったのだろうと。設定したの僕じゃないので多分だけど。 サーバが比較的空いているいるときにはそれで良かったんだろうけど、サーバが混雑してきてどうやら1日でスキャンが終わらなくなったっぽい。clamscanによるスキャンははただでさえI/Oを食って重いので、“相互作用”だった感も否めないけれどもともかくそういうことが繰り返されて複数プロセス立ち上がってサーバ瀕死ということになったのかなと。 1番良いのはclamscanを立ち上げる前に既にプロセスが走ってないかチェックして複数プロセス立ち上げないこと、もしくは、スキャンに掛かる時間を短縮させることだと思うんだけど、それを考えるのも面倒だったのでとりあえずcron.dailyからcron.weeklyに移動させて対処。さすがに1週間あれば終わるだろうという予想。 さらに起動中重くなりすぎないようにnice値を下げるというのも有効っぽい。 /etc/cron.daily/clamscan の処理が重いので – 寝不足にて候(仮) これも試してみることにする。

続きを読む

【メモ】 452 4.3.1 insufficient system storage

以下のエラーが出てメールが送れなくなった。

452 4.3.1 insufficient system storage
先日入れ替えたサーバの/var領域が10GBしかないのにも関わらず、アクセスログが溜まりまくりという設定になっていたせいでパンクしたらしい(確認時85%使用)。 とりあえずaccess_logを削除して出力を止めて対応。無事復旧。 さて、どうしたもんか…

続きを読む

【メモ】サーバ負荷計測まとめ(結局、sysstatインストールした)

ここまでの関連メモ。 【メモ】 サーバのLoad Averageなどを監視するコマンド「top」をログに保存する 【メモ】 サーバのLoad Averageなどを監視するコマンド「top」をログに保存する(PHP版) 【メモ】負荷測るならtopでLoad Averageよりsarの方が… んで、とりあえずめどがついたっぽいのでとりあえずまとめのメモ。

今回の目的は「単体サーバの状況を視認しつつ結果を非技術者にわかりやすい形で提供する」です。技術的には不要なこともしてるんですが、その辺は考慮していただく方向で。『コマンドをPHPから叩いて保存して負荷観測する』という乗りかかった船のまとめだと考えてください。サーバが複数ある環境でのきちんとした監視なら、gangliaなどを入れてみる方が賢いです。

続きを読む

【読書感想文】 [24時間365日] サーバ/インフラを支える技術

[24時間365日] サーバ/インフラを支える技術 ?スケーラビリティ、ハイパフォーマンス、省力運用 (WEB+DB PRESS plusシリーズ)[24時間365日] サーバ/インフラを支える技術 ?スケーラビリティ、ハイパフォーマンス、省力運用 (WEB+DB PRESS plusシリーズ)
安井 真伸
技術評論社 2008-08-07
売り上げランキング : 1773
おすすめ平均
Amazonで詳しく見る
by G-Tools
今さら過ぎて上げるのを止めようかとも思ったんですが、自分が無知であることを隠して知ったかぶりし続けるのもどうにも具合が悪いので書いておきたいと思います。えーと、ようやく読みました。昨日届いて、昨日とりあえず4章の途中まで。

続きを読む