FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

サーバ再起動後の結果

さきほどサーバメンテナンスで停止し、再起動しました。
予測どおり、
・チャットサーバのプロセス
・FLASHのpolycyfileを返すプロセス
・自動応答君のプロセス
は起動してないので、手動で立ち上げました。
また
# cat /proc/sys/net/ipv4/tcp_retries2
15
だったので
# echo 5 > /proc/sys/net/ipv4/tcp_retries2
も行いました。
「チャベリ誰がいた」は無事に起動していました(停止時間帯のデータは取れていませんでしたが)

ただし問題がありました。
チャットサーバプロセスがsignal 15を受けて停止作業を開始したまではいいのですが、
PostgresSQLのDBを更新しようとして、すでにPostgresSQLプロセスがアクセスできなくなっていたので
部屋にINしていた人数と名前がテーブルに残ったままになっていたので
手動で消さないといけなかったです。
このあたりはめったにないことですが課題ですね。

http://chattera.net/
http://chattera.net/chaberilist.php

スポンサーサイト

期限切れデータファイルの削除

チャベリ誰がいた(http://chattera.net/chaberilist.php)では
10分ごとにデータを取ってきてそれをファイルに保存しています。
(これもcronで起動されるのですが・・)
10分ごとに作成するので、ほっておくと大量のファイルが作成されます。
そのため毎回期限切れのファイル(今は3日間)を探して削除する必要があります。

今はそれをcronで呼ばれる作成バッチの最後で
find データの保存場所 -mmin +4325 -delete
で実行しています。

-mminはファイルの更新時刻でマッチされる判別式で+4325は4325分以上経過しているということです。
3日は60*24*3=4320なのですが、ファイル作成の時間にぶれがあるので、5分を足しています。

http://chattera.net/
http://chattera.net/chaberilist.php

tcp_retries2は大丈夫かな

サーバメンテナンスでサーバが再起動になることを書きましたが、
サーバに行った設定をみてみると

[root ~]# cat /proc/sys/net/ipv4/tcp_retries2
15
[root ~]# echo 5 > /proc/sys/net/ipv4/tcp_retries2
[root ~]# cat /proc/sys/net/ipv4/tcp_retries2
5
というのをやっているんですよね。
これはTCPで送信したときにのリトライ回数で、チャットの通信が切れて送信ができなかったときに
あきらめてConnectionが切れたという判断をするまでのリトライ回数です。
チャットの場合は、そんなに長くまっていられないので、デフォルト15を5に変更しました。
リトライ間隔はだんだん伸びていくので15だと7分くらい待ちますが、5だと20秒くらいで
接続がきれたと判断してくれます。
(時間はうろ覚えなので、正確な数字ではありません・・)

それで、サーバが再起動したときに、このtcp_retries2はリセットされてしまうようなうろ覚えがあります。
まあ、リトライ回数なのでしばらく放置でもいいのですが、早く思い出して、再設定するためにもここに書いておきます。

http://chattera.net/
http://chattera.net/chaberilist.p

サーバメンテナンスのお知らせが来た

サーバメンテナンスのお知らせが来ました。
サーバを一時停止してメモリを増設して起動するらしいです。

問題は、サーバが起動した後で、各種プロセスがちゃんと起動してくれるかですね。。
httpd,postgresql,crondはchkconfigでonになっているので、
チャベリ誰いたはサーバ起動後に使えそうですが、
チャットのプロセスは自動で起動する設定をしてないので、手動で起動するまで
チャットは使えなさそうですね。

とりあえず、手動で起動する必要のあるプロセスは
・チャットサーバのプロセス
・FLASHのpolycyfileを返すプロセス
・自動応答君のプロセス
くらいですかね。
さくらのプロセスはcrondから起動されるので、大丈夫だと思います。

http://chattera.net/
http://chattera.net/chaberilist.php



shのゾンビがいる

psでプロセスをみてみると
[sh] <defunct>
がいくつかでてきました。。
どうやらcrondから実行されてshで、例のさくらのプロセスを起動するスクリプトです。
[sh] <defunct>はさくらのプロセス数だけあって増えてないので、さくらのプロセスが終了した時点でゾンビも消えるようです。
プロセスの呼び出し順としては
・crond
・さくらの呼び出しsh
・さくらの呼び出しperl
・さくらプロセス(2人分)
となっていて、さくらプロセスはバックグラウンドで動いて、perlとshは終了するはずなんですけどね。。
ほっといてもいいけど、なんか気になりますね。
どうすればゾンビにならなくなるんだろう。

http://chattera.net/
http://chattera.net/chaberilist.php

道順パズルをここでやってみる

先日、道順パズルについて書きましたが、
それをこのブログ上でできるかどうか、やってみます。

以下にiframeで道順パズル上級を挿入します。
JavaAppletが必要ですので実行したい場合は、Javaをインストールして、このサイトで実行許可をしてください。



サイトに移動しての道順パズルは以下のURLからできます。
http://chattera.net/route/

http://chattera.net/

道順パズル

少しそれますが、道順パズルというものを以前つくったのですが、
せっかくなのでこのサイトに入れました。
http://chattera.net/route/
JavaAppletで作っていますのでご利用の際はJavaをインストールしてください。

どんなパズルかというと、子供の能力開発にでてくるような
マス目と障害物がおいてあって、スタートからゴールまでどのマス目も一度だけ通過する道順を考えるパズルです。
大人でも暇つぶしやボケ防止になると思いますので、ぜひやってみてください。
初級から上級までいくつかのパターンを用意しています。

上級の問題例です
道順パズル上級問題

この図のスタート矢印からゴール矢印までマウスでたどります。


実際にやってみるには、ここからアクセスしてください。
http://chattera.net/route/



以下はその解答です
道順パズル上級例

http://chattera.net/

FLASHからJavsscriptの呼び出し

前回readしたデータをJavsscriptに渡すためにcallJS()という関数を呼び出しましたが
FLASHからJavascriptを呼び出すのは以下のようにします。

まずExternalInterfaceをimportします。

import flash.external.ExternalInterface;

そうしておいてcallJS()関数で以下のようにすればいいです。

private function callJS(type:String,str:String): void {
ExternalInterface.call("DoFSCommand('"+type+"','"+str+"')");
}

ここではDoFSCommand()というJavascriptの関数を呼び出すようになっていますので
Javascrptで実際に以下のようなDoFSCommand()をつくらないといけませんね。

function DoFSCommand(type,commandline) {
・・・
}


http://chattera.net/
http://chattera.net/chaberilist.php

プロフィール

chattera.net

Author:chattera.net
フリーでソフト開発の仕事をしています。
自作したこのチャットシステムは、何か世の中に役に立つこともあるかと思いますので、お呼びがかかるとうれしいですね。

連絡先は chatteranet@gmail.com です。

また、ソフト開発関連のお誘いもうけたまわっております。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。