2016年6月29日水曜日

AWS EC2が勝手に再起動するとは聞いていたけど本当にしやがった

サーバーを動かしていて、httpでの応答を監視していたのだが、しばらくタイムアウトが続いた後、Connection Refusedになった。

CloudWatchの方では、タイムアウトした頃からモニタリング測定値がなくなっていた。

異常になってから15分ほどで回復したが、自分がsshで接続してみた頃には何事もなかったのようにサーバーは動いていて、最初は何が起きたかわからなかった。

 last reboot

というコマンドで、直前のOS起動時刻がわかるそうで、それを実行してみてなるほど再起動かと。


なお、Elastic IPは使っていないし、特に何かの設定もしていないが、EC2のIPアドレスは変わっていなかった。


なお、せっかくきれいに再起動してくれたのに、Apacheの自動起動を設定していなかったために、サービス自体は自動復旧しなかった。

スクリプト自体は勝手にあったので(Amazon Linuxのインスタンス)、

 chkconfig httpd on


で、たぶん次からは自動起動するだろう(テストしてないけど)。

2016年6月28日火曜日

RDS(PostgreSQL)で接続が足りないエラーが出たりする状況

本日の教訓。

PostgreSQLで、最大接続数の設定値確認は、PSQLで

show max_connections;

AWS RDS(PostgreSQL)での最大接続数の原則は、

インスタンスのメモリ(GiB)*1024*1024*1024/31457280 
より少し少ない程度。
ただしこれは、パラメータグループの内容により変わるかもしれない。


2016年6月18日土曜日

Files.listにやられた→ディレクトリが消えない

Java7から追加されているjava.nio.file.Filesクラスは、Pathと並んで便利。

だが、ちょっと気持ち悪いAPIのせいで気持ち悪い現象に嵌った。

Tomcatからの操作でディレクトリをFiles.delete(path)で消すと、成功する。成功するのにディレクトリは消えていない。もう一度消すと失敗する。そりゃそうだ、さっき削除に成功しているのだから。

でも、ディレクトリは依然として存在している・・・なぜかタイムスタンプがなくなった状態で。

そして、Tomcatをシャットダウンするとディレクトリは消える。


・・・という現象。


何かをcloseし忘れてるのだろうとは思ったが、ファイルじゃなくてディレクトリだし、空だし・・・と悩んでしまった。

結局、Files.listで一覧を取得した際に帰ってくるStreamをcloseしていなかったから、ファイルのハンドルが閉じていなかったようだ。で、プロセスが消える時にそれが閉じるのでようやく本当に消えると。

でもさあ。

Files.list(path).filter(f->Files.isDirectory(f)).forEach(f->Files.delete(f));// これはダメ

とか書きたくなるじゃん。Streamで帰ってくるんだから。

JavaDocをよく見たら、

try(Stream<Path> = Files.list(path)){
  //do something
}catch(Exception e){

みたいにやれと書いてあったけど、なんかそんなら無理にStreamとかにしなくても良かったんじゃねえの、という気がする・・・。


なお、問題が起きてたのはWindows環境。Linuxだとどうなのかは確認してない。

2016年6月3日金曜日

豚の餌

自分にはしばしばあることなのだが、外食というか飲み屋なんかで、出てきた料理を食いながら「さすがにしょっぱ過ぎる」とか「化学調味料バリバリっつうのも・・・」とか「肉ってやっぱ値段相応じゃん?」とか「豚の餌みたいな・・・」とか、そういう台詞を言った瞬間に店の人が「お待たせしました」って料理持ってきたりする。しかも、そういうときに限ってなぜかオーダー取りの姉ちゃんじゃなくて調理担当の人が持ってきてたりする。

・・・今夜もそうであった。

言っておくが、上記の台詞は、けして店の料理に対して言っているのではない。店の料理もイマイチのこともあるが、だからと言ってそれを店内でケチつけるほど俺も不届きな人間ではない。

むしろ、食いものが美味しい時に、触発されて料理の話になり、他所のひどい店で食ったものとか、自分で作った料理の失敗談とかを話しているのだ。

でも、料理を持ってきて断片的に言葉を聞いた店の人は、きっと自分の料理が貶されたと思うのではと思い、いつも無駄にビビっており、かつ申し訳なく思う。やれやれ。

まあ、普段からそういう汚いことを言わなきゃいいと言われたらそれもそうなんだが、でもねえ・・・・それも詰まらないしねえ・・・。

みなさんはそういうこと、ないんですかね?