トリアエズぶろぐ
フリーランスでやってる77世代のWEBプログラマが福岡からのんびりとお送りいたします。
スポンサーサイト


一定期間更新がないため広告を表示しています

CentOSが遅くなったりハングする。


以前Windowsを入れていたPCをサーバに仕立てようと、CentOS5をインストール。
インストールはうまくいっても、起動後動作が重くなったりハングしたり。
「古いPCには古いOSを」という言葉をどこかで見かけて、CentOS4.5を再インストール。
一見、順調に動いていたんだけど、起動して1日経過すると、とにかく動作が遅くなる。
というか反応が遅い、鈍い、え、これってハングしてる?

google先生を探し回った結果、見つけたのがこれ。
1日経過すると反応しない http://groups.google.com/group/jlug.ml.users/browse_thread/thread/0417b060c924d4f3

/etc/grub.confにnoapicを追加してみる。
明日どうだろう。様子見ですな。

#12/14追記
どうやら安定したみたい。よかったよかった。
procmailでメーリングリスト


なーんにも考えずに、procmailでMLをしようとしてこのように設定しました。
:0
!hoge@fuga.net moge@muga.com soge@soga.com

すると、MLで流されたメールに普通に返信しても、送信者本人にしか返信されない。
これをメーリングリストに返信させるようにするには、転送するメールにReply-Toヘッダを追記します。
また、エラーメール等がループするとえらいことになるので(実際なりました><)防止策も追加。
## エラーメールを破棄。別のアドレスに転送してもいい。
:0
* ^From: .*MAILER-DAEMON
/dev/null
:0
* ^From: .*postmaster
/dev/null
## ループ防止
:0
* ^X-Loop: ml@xxx¥.com
/dev/null

## 以下、MLの設定
## MLのアドレスがml@xxx.comの場合
:0 fhw
| /usr/bin/formail -I "Reply-To: ml@xxx.com"
## ループ防止ヘッダ追加
:0 fhw
| /usr/bin/formail -A "X-Loop: ml@xxx.com"
:0
!hoge@fuga.net moge@muga.com soge@soga.com

以上、メモでした。
#12/11 ループ防止ヘッダを追記
PostgreSQL:INDEXに気を配れ!サイト運営のメモ


いや、自分のことです。ごめんなさい。

つなビィの記事数が200万件を超えたくらいから、なーんかレスポンス悪くなったなーと思って、DBの構成とか見直してみたんです。
記事テーブルがこんな感じ。
TABLE diary
  id serial,
  member_id integer,
  title text,
  ・・・

idにはもちろんINDEX UNIQUEついてるんだけど、そういやmember_idにINDEXついてなかったなー。と思って、CREATE INDEX ⇒ REINDEX してみたんです。で、その結果。
■INDEX前
Limit (cost=0.00..6498.34 rows=10 width=400) (actual time=161.220..2318.262 rows=10 loops=1)
-> Index Scan Backward using diary_pkey on diary (cost=0.00..1795492.30 rows=2763 width=400) (actual time=161.214..2318.228 rows=10 loops=1)
Filter: (member_id = 2)
Total runtime: 2318.383 ms

■INDEX後
Limit (cost=4062.08..4062.11 rows=10 width=400) (actual time=1.831..1.849 rows=10 loops=1)
-> Sort (cost=4062.08..4068.90 rows=2727 width=400) (actual time=1.828..1.834 rows=10 loops=1)
Sort Key: id
-> Index Scan using diary_member_id_idx on diary (cost=0.00..3619.00 rows=2727 width=400) (actual time=0.065..1.186 rows=240 loops=1)
Index Cond: (member_id = 2)
Total runtime: 1.951 ms

( ゚д゚)・・・( д)゚ ゚

まじで?

3回ずつ平均とってみると、その速さ、1220倍…。

いままで俺はなにをやっていたんだろう…orz

今日からcronで毎日 VACUUM FULL と REINDEX まわします…。(やりすぎ?
WinSCPの設定を移行する


PC乗り換えに伴って、WinSCPの情報を丸々っとエクスポート&インポートしたいなぁ、と思ったんですがエクスポート機能がないのね、これ。
んで探した結果。
さてWinSCP3のセッション情報の移行で問題発生。
どうやらエクスポート機能がないらしい。
WinSCP Japanese siteによると
FAR+WinSCPでこの機能がサポートされるらしいが、これだけのためにFAR導入したくないぞ。
レジストリHKEY_USERS¥S-1-5-21-1957994488-1035525444-725345543-1000¥Software¥Martin Prikryl¥WinSCP 2
を丸々コピーすれば解決しそうだけどできればレジストリ操作したくないなあ。なぜなら素人だからだ。

というわけで安全で簡単な方法あったら教えてください。

WinSCP3のエクスポート - ただのにっき

とあったので、
RegEditでWinSCPを検索 ⇒ キーをファイルに保存 ⇒ 新PCでレジストリ登録
やってみた結果、大丈夫でした。

数日後、以下の記事を発見。
WinSCP -> ini ファイルに出せる(ログイン画面 [設定]->[環境設定]「保存」タブ「設定の保存」
 * 乱数ファイル(C:¥Documents and Settings¥¥winscp.RND)のバックアップを忘れない事)

Technical Tips - Windows 再インストールメモ

んだー!iniに書き出せるのか!しらなんだ。。。
英語版では
Preferences ⇒ Storage ⇒ Configuration Storage
でiniに設定を保存できるみたい。

メモメモ…。
アタックされてpopにアクセスできねぇ。


てなわけで

/etc/hosts.deny

in.qpopper: 82.77.
とか書いてみる。

なぜルーマニアからアタック…。
サーバインスコ…


久しぶりにサーバにOSを入れることに。
新品(のはず)のIBM X336。
ServeRAIDを起動するといきなりクリティカルエラー。

あれ。空のHDDを再構築してる。超遅い。
RAIDBIOSのアップデートも失敗するし。

とりあえずほっといてCentOS入れてみる。
インスコは無事終われど起動でフリーズ。

VineLinux入れてみるかー。とかって入れようとして
あ、VineってばRAID未対応だったーとか
なんだかんだで4時間経過…orz…チカレタ…

試しに近くに落ちてたRHES入れてみたらなんとか動いた模様。
ここで再構築40%まできた。とりあえず放って置いて明日なんとも無かったらそのままデータセンターにぶち込んでやる!

俺もそろそろスルー力ついてきたな。(マテ
PostgreSQLをクラスタリングで負荷分散で試行錯誤でorz その5


pgpoolの運用を諦めました…orz

高負荷時pgpoolに障害が出た場合の対処等がどうしてもうまく扱えませんでした。残念。
しかし色々なネット上の文献を調べ尽くして、複数台DBを運用するにあたっての問題点や注意点など勉強することができてよかった。pgpoolに感謝。
今後は自アプリ上で負荷分散を運用していきます。大変だけど面白くなってきたぞー!と。


#ルータの問題はいまだ解決せず…どうしたもんかな。
PostgreSQLをクラスタリングで負荷分散で試行錯誤でorz その4


今回はルータ編。

以前、複数台のDBで負荷分散してもベンチ結果が思わしくなかった時に「ルータがボトルネック?」って書いたんだけど、、、その後一念発起してルータを購入しました!!

続きを読む >>
PostgreSQLをクラスタリングで負荷分散で試行錯誤でorz その3


何処からか天の声が聞こえてきたので書いてみます。

前回までの記事
PostgreSQLをクラスタリングで負荷分散で試行錯誤でorz
PostgreSQLをクラスタリングで(ry その2

前回の記事でpgpoolに落ち着いた…と思わせといて、実は断念していました。
理由は、どうしてもSERIAL型の整合がつかなかった為。
続きを読む >>
PostgreSQLをクラスタリングで(ry その2


前回、PostgreSQLを負荷分散する為にPGClusterの導入などを試行錯誤していましたが、結局pgpoolに落ち着きました。。。
PGClusterの障害機の自動復旧機能(他のDBからデータが自動的にコピー、復旧中に受けたクエリーも反映)が非常に魅力的だったものの、詰まる所シンプルベストにしようかな、ってことでpgpoolに決定。

・PGClusterがVerUPしたら複数台のDBサーバ全部でmakeしなきゃなぁ。。。
・pgpoolは1台だけにrpmで簡単インストール&VerUP。超簡単。
・現在のpgpoolはDBノードが2台までという制約があるけど、
 次期バージョンのpgpool-IIではDBノードが3台以上いけるらしいので期待age。
・pgpoolのpgbench結果が前回のPGClusterより良かった。(実施のタイミングによる差が大きく関係してるっぽいけど

PostgreSQL8.1.4をソースからインストール
pgpoolにて2台構成
max_clients = 128
shared_buffers = 10000
1    2    4    8    16   32   64
249 413 430 421 396 361 295
こんな感じに。

↓おまけで参考にならないグラフ。
PostgreSQL / PGCluster / pgpool
やはり単体DBよりはパフォーマンスが落ちている。
ルータがボトルネックになっているのは間違いないっぽいなぁ。。。

勉強がてら、YAMAHAのルータでも買うか。。。タカイナァ
本当はサクッと買って、余計なパケットが無い状態で純粋にpgbenchしたかったんだけど、つなビィ使って頂いているお客さんからちらほらクレームが来つつあったので緊急(強行)メンテナンスを行って、クラスタリングで負荷分散を実施。
結果、体感速度2〜3倍。わーい。さっきまで 24 とかあったWEBサーバのload averageも今では2〜3(!)pgpool、素晴らしすぎる。。。

しかし、複数台運用とか(自コンテンツでは)初めてだからドキドキするなぁ。
しばらく用心して様子見よう。。。
続きを読む >>