ここ最近鯖が頻繁にフリーズしていると思ったら・・・

apacheのチューニングが甘く、メモリリソースを完全に食い尽くしてました。 と言うのも、とりあえず/var/log/以下を見る前に、手軽にwebminのプロセスマネージャでメモリの様子見たら、 2GBあるメモリの大半をhttpdが食い尽くして、Swapまでもかなり侵食している状態で、 こりゃ不味いと思い、httpd.conf再確認してみたら正直酷すぎてワラッた。 と言うことで、もう一台のサーバを構築しつつ、確実に不必要なモジュールをガンガン削ったkernelをリビルドしつつ、 現行のサーバの方も少し手を入れました。 これで暫くは大丈夫だと思うけど、そもそもWordPressメモリ食いすぎw 最近のWordPressは頗る高機能でブログ管理が相当捗っているわけですけど、 それ相当のサーバスペックを要求すると言うか、チューニングしないとWordPressの能力を発揮できないと言う事がよく分かった。 あと、httpdのログをみた所、マイクロソフト製のクローラ、bingbotが異常に負荷掛けてる 何つも並列で回収しに来ているみたいなのだが、こちらのhttpd.confの設定がタコだったから、 ハードウェアの限界以上に返答して、一杯一杯になってる感じ。 とりあえず、今構築している方である程度チューニング済んだkernelで起動してみたが、15秒程度で起動するスペシャルなkernelのCentOSが出来上がった。 もう少し深くx86のハードウェアの知識があるなら、もっと不要なモジュールを削って、10秒以下まで短縮可能だと思うが、 現在の知識レベルだと試行錯誤に時間取られそうなので、今回はここいら辺で追うのは止めておく。 ちなみにlspciでみると、NICが”RTL8101E/RTL8102E”となっているが、 100BASE-TXのクセにどうやらGigabitEtherである”Realtek 8169 gigabit ethernet”のドライバを使うらしい。 100BASEのモジュールの方に無かったからわかり辛い・・点 CPU負荷の事を考えるとintelのNICを刺した方が良さそうだな。 時間が有ればもっとカリカリに最適化したいw

写真のデータ整理

「PhotoshopLightroom」(以下LRと記載)を使う前は撮ったRAWデータはPENTAXの一眼レフの本体に付属してくる「pentax photo laboratory」を使って一括でJPEGを生成してましたが、 割とアバウトにデータ管理していた部分があって、気が付けば同じRAWが色んな所に存在すると言う凄く無駄な事していたので、 この際完全にLRでのデータ管理に一元化してみることにしました。 (当然、双方向バックアップが出来るUNISONで半自動で2台のNASでバックアップはしてましたけど・・・) 以前はCPUのスピードが遅かったので、一度に現像してそのままJPEGを使っていましたけど、 AthlonⅡ260という一応クアッドコアなCPUとメモリ16GB搭載マシンなので、必要あればその都度LRで現像した方が良いのでね。 この週末でガンガンNASサーバから移動してきて、LRにカタログ登録してましたけど既に11万枚突破してます。 コレだけ登録しても安定性問題ありませんね。 しかしアバウトに管理していただけあって、ダブりで持ってた画像が沢山あったw お陰で随分すっきり整理出来た、終わったらこのデータを再びNASにコピーする感じかな? あと更に驚いたのがLRの賢さ。 画像のEXIFの撮影日で自動的にフォルダ分けしてくれるし、 転送先に同じが画像があると、移動せずにそのままにしてくれるし、 壊れた画像データとかだと移動せずにお知らせしてくれる。 同じ画像でRAWとJPEGがあるとRAWのみ移動してくれたりと、自分の理想にかなり近い処理をしてくれます。 こりゃ写真管理が物凄く捗りそうだ。

サーバコンテンツをリストラクチャする予定

犬鯖にコンテンツですが、何となく方向性が絞れて来ているので そろそろ広げすぎた構想にメリハリをつけて行こうかと考えてます。 実際の所、犬鯖のコンテンツで頻繁に更新しているのがこのブログだけだし、 トップページもCMSのjoomlaとか使ってますが、それも廃止の方向で、 ブログも1個で充分と言う事でなので、1個に纏め様かと思います。 「ブログ」、「フォトギャラリー」、「wiki」、「リンクその他」程度にして、 シンプル化を推し進めようかと。 効率を高めても自分のリソースというのは自ずと限界があるし、 何でもかんでもスクラッチで開発すれば良いような時代じゃ無くなってきているし、 やはり選択と集中がもっとも重要なのかなと、10年近く自宅鯖やってきて、 それが最近ようやく分かったwww

カーネル再構築

今構築中のscientific linux6.1のWebサーバですが、 CPUをAtomに最適化して確実に不要と思われるモジュールのみ外して、 非力なAtom230でKernelのx86_64で再構築やったら10時間以上掛かりました。 再度やるならもっと不要なモジュール外さないと駄目だなこりゃ。 しかも、ビルドが完了してからkernelをインストールしようとしたら、 依存関係でkernel-firmwareが必要との事で、 kernel.specを開いて「firmware」で検索して、102行目のフラグを1に修正して、 再度10時間掛けてビルド行い、ようやく再構築したKernelで起動しました。 下記のとおりです。 修正前 %define with_firmware %{?_with_firmware: 1} %{?!_with_firmware: 0} 修正後 %define with_firmware %{?_with_firmware: 1} %{?!_with_firmware: 1} しかし、こりゃ罠だなw

問題発覚

どうやら、PHP5.1.XからPHP5.3.Xにすると切り捨てられてサポートしていない関数や レガシーなコードがいくつかあるらしく、あるページで使われている掲示板のシステムが エラーを起こしてました。 具体的に引っかかったのが下記のようなコードです。 $aaa =& new BBB(); 上記のコードでnewの前に「&」を使ってはいけないらしく、 PHP5.3.Xからは下記のように書かないとダメみたいです。 $aaa = new BBBBB(); それをコード全体で使われていて全て置換してみましたが、 それでもダメでまだレガシーな記述方法が残っているみたいで、 このままトライアンドエラーしても時間ばかり掛かるので、 別の方法を模索してみようかと思います。

サーバを交換

どうも放置していたPhotoGallaryで使用しているCoppermine Photo Galleryのバージョンが古かったらしく、 スパムの温床になってサーバにログインが困難になる程の負荷が与えている状態に陥って、何度か泣く泣くハードディスクリード中に電源ボタンを押下しましたが、 紆余曲折を経て要約サーバ移行が完了した。 しかし、散々しまのさんへ文句言っていたわりに、自分も同じように放置していた事には多々反省してます。 と言うことで、代替のサーバは同じatom230のAOpenのベアボーン、XC Cube LE201ですが、 元々構築途中だったCentOS5.6を最新のパッチが当たっている状態にして、PHPとMySQLをここのものに変更し、 PHPが5.3.6、MySQLが5.5.14に変更しました。 何でここまで新しいのを使いたかったのかと言うと、そもそも前衛的に極力新しいバージョンに更新しないと、 後で更新する必要が出た場合、逆に時間が掛かったりするからと言うのもありますけど、 phpMyAdminが結構シビアに新しいバージョンを要求すると言うのが大きいです。 ちなみに一連の移植でシステムの中で一番楽なのが、WordPressです。 もうこれは管理画面から更新が可能だから、新しいバージョンが出ると大抵更新しちゃってます。 プラグインとかテンプレートの更新も管理画面上で知らせてくれるから、 面倒なら寧ろWordPressだけ使ったほうが良いかと思うくらいです。 一番面倒だったのが、Coppermine Photo Galleryでした。 頭来たからカッとなってパーミッションを「000」にしていましたけど、 何とか1.4系の最終版、1.4.27に更新して、更にこれを無理やり1.5.12に移植しました。 自動アップデートと言う素敵なツールなんか無くて、sqlファイルを吐き出してテキストエディタで置換して修正加えてました。 はっきり言って、これがかなり面倒と言うか、DBのテーブル自体のカラムが微妙に無くなっていたり、増えていたりで、 ちょっと次の更新が同じようなCoppermine Photo Galleryを使うのを止めようかと思ってます。 exifの情報がまだ移植しきれてませんが、これは暇なときにでもやろうかと思ってます。 後は地味にmediawikiも最新版に更新しつつ、トップページで使用しているjoomla!も1.5系列で一番新しいバージョン、1.5.23にあげときました。

今待機側の鯖を確認してますが・・・

phpMyAdminの3シリーズってPHP5.2以上を要求されるけど、 今使っているOSがCentOS5.6で、標準でPHP5.1.Xなので他のリポジトリを追加して 無理やり5.2を入れているが、phpだけで完結してなくてMySQLも絡んでいろいろ面倒なので、 PHP5.2以上を標準で採用しているOSに変更しようかと考えてます。 最近話題のScientificLinux6.0に変えるか、今まで通りCentOS6.0にするか・・・ それとも独自ビルド???

自宅鯖が暴走

最近自宅鯖が不安定でフリーズしている状態が多発しています。 原因はほぼ掴んでいて、どうやらチャットのシステムにOpera10Mobileからアクセスすると、 タイミングによってディスクを無限に読み込んでしまっている状態になって、 この状態になると無理やり電源スイッチを落とさないと回復しません。 あまり良いCGIスクリプトじゃない気もするので、もしかするとチャットシステムを入れかえるか、 もしくはソースファイルに修正を入れようかと考えてます。 このまま続けるとディスクに深刻なダメージを与える恐れがありますが、 ディスクは壊れても良いが、肝心のデータが吹っ飛ぶと大きいので、とりあえず代わりに待機しているサーバへ移行します。 どうやら、httpdのログを詳しく見てみたら、フォトギャラリーで使っているcpgが怪しい。 スパムの温床になっていたので、最近は殆ど更新もしていない状態なので、 このサービスを停止します。

ファイルサーバの構成を強化

ようやく仕事が一段落してきたので、買い貯めていたWD20EARSをファイルに載ってた 1TBのディスク群と交換した。 到着して開けもしないズボラ具合、と言うか暫くそんな余裕が一切無かったから。 そうなら無理して買わないで必要になった時に買えば良いのにと自問自答w ざっと5台よw、プラスデータ退避用途で使っていた1台をプラスして合計6台。 まぁ、真のNASERいや、NASESTは2桁台が当たり前だと思うが、 私的にはある程度分散させてコスト削減と安全性を確保したかったので、この程度。 ディスクの山を見ると安心するぜwww WD20EARSはLinuxで使うのには少し面倒で、 先ず適当なマシンに繋げてDOSを起動してwdidle3でIntelliparkを解除すると。 これをしないとNASのような用途だとかなりの短期間でヘッド部分が劣化してしまう。 これを6回繰り返すと言うか、多分WesternDigitalオンリーの環境なら普通につなげた後一気に変えられる気がするが、 今回は地道にやった。 それでもって、実際に組み込んだ後フォーマットするが、 その時必ず4096KBセクタを指定しないと、本来の能力が発揮できない。 今まで使っていたのは、Socket939のAthlon3500+にDDR3200の512MBが4枚。 これを、AMD690GのM2AVM-HDMIに交換。 CPUはAthlon4200+にDDR2 6400の1GBが2枚。 DDR2メモリが腐るほど余っているからスロットの限界まで挿しても良いのだが、 無駄に消費電力を上げてもアレかなと思って留めて置いた。 そして、恐らくAMD690Gよりも、AMD780G以降のノースブリッジの方が 低消費電力なのだろうが、何せM2AVM-HDMIは3枚も在庫があるから、 故障した時の時間的なリスクを考えてこれにした。 後はハードディスクを取り付けるだけだったが・・・ 疲れてかなりテキトーにネジ回してたら ぎぃややあやああああああああああああああっ、ネジの頭が取れたよOrz オマケに無理やり取ろうとしたら、指を怪我した。 15分程格闘したが、無理と悟ってその日は寝た。 クソ品質のインチネジを付ける位なら、付けないほうがマシだ・・・ 次の日、会社帰りに少し遠いホームセンター、コーナンとカインズに行って工具を調達してきた。 ネジザウルスと、日本製のプライヤー、ネジ滑り止めの3つ。 これで運が良ければ何とかなるだろう、オールジャパンメイドの精度の高さをみせてくれれれれれぇ~ ダメだ、ネジザウルスの力を持ってしてもこのネジの残りは取れない。 何という迷惑なネジなんだ・・・ 相手が精密なディスク故に無理も出来ん・・・ ・・・、と言うことで 早速WD20EARSを追加購入w しかし、何台WD20EARSを買っているんだろうか。 よし、組み込み完了、ディスク6台で、SoftwareRAID1+SoftwareRAID5を構築。 壮観だ 今回もCentOSをフラッシュメモリ用にカスタマイズしたOSをインストールしたが、如何せん無駄が多すぎ。 私の場合、NASサーバは24時間起動しているわけじゃないから、贅肉を落としたOSの方が望ましい。 と言うことで実験で、もう一台のNASの方を独自ビルドのLinuxに置き換える予定だが、果たして上手く行くかな  

[…]

サーバ停止のお知らせ

地震の影響に伴う輪番停電の為、暫くの間サーバを止めます。 とりあえずどの程度のものか良く分かってないので暫くは長時間止める事に なると思いますが、少しずつ起動している時間を増やしていこうかと 考えてます。