Sunday, October 02, 2011

Apacheが4:02にSegmentation Faultを吐く

数ヶ月に1回くらいの頻度ですが、Apacheのプロセスが4:02にSegmentation Faultを吐くことがありました。
CentOSの上で走らせているんですが、静的なファイルへのアクセスは問題なく、phpを動かすとSegmentation Faultを吐く。

yum-updatesdがパッケージを更新して何かおかしくなってる?と以前は考えてみたりもしましたが、
現在はyum-updatesdを使っていないのでその可能性は考えにくい。

前回発生したときには原因を特定できてなかったので、これは困ったな…
と思っていたら、下記URLに記載の内容が現在とドンピシャ。

http://thinkit.co.jp/article/736/1?page=0,1

Apacheのログに「SIGHUP」の文字列が残っていたので、
それらのワードをヒントに検索したらヒット。
前回は探し方がまずかったようですね。

要はSIGHUPを発行するとSegmentation Fault出しちゃうPHP Extensionが居ると。
誰だそいつは!ってそこまでは特定できていないのですが…

とかく対策としては、

・ログのローテートにSIGHUPを発行しないApache付属のrotatelogsを使う
・SIGHUPを発行しないようにlogrotateの設定を変更する

と書かれています。

二つ目の方法を採用する場合、kill -HUPではなくservice httpd restartとかを実行すればいいのかな。
/etc/logrotate.d/httpdに記述されているreloadをrestartに変更すればよさげですね。
/etc/init.d/httpdに記述されているreloadの定義を見てみると、SIGHUPを発行するようになっていました。

SIGHUPをApacheに送って症状の再現を行い、上記の対策を施して、再度症状の再現を試みてみますか。
で、再現しようとしてみたのですが、発行しまくっても再現できず。
仕方ないのでまたしばらく様子見ですね。

Thursday, September 29, 2011

C#でHTTP Proxy Server

C#で簡単なHTTP Proxy Server書くとしたらどう書くんだろうと思って探してみたら、
下記URLに掲載されているコードが丁度よさげでした。

http://times.imkrisna.com/2011/08/simple-http-proxy-server-c-source-code/

探し方が悪かったのか、コピペしてちゃんと動くHTTP Proxy ServerのC#ソースコードが見つからなかったのですが、
上記のはさくっと動きました。
シンプルですし、流れを把握しやすそう。
追々、あれこれいじってみようかと思います。

例えば、Twitterのツイートのフィルタリングなんかをやってみたいなと考えてます。
メインでTweetDeckを使っているのですが、フィルタリング機能が少々弱いなと感じていまして。

それができたらF#で書き起こしてみたりですかねー。