アーカイブ「2015年03月」

redisのようなシングルスレッドのDBは、

極端な話コネクションは1つでよい。

 

javaやnode.jsでwebsocketを組んだとき、

1人1コネクションみたいにやっていたが、

そんな必要もない。

 

たくさんのコネクションを維持しても、

redisはシングルスレッドなので、

一度に処理できる命令は1つ。

(※multiを使っても一つと考える)

 

javaの場合は、スレッドセーフな領域に

redisコネクションを格納しておけばよく、

node.jsの場合は、global変数的な扱いで(※クラス外の定義変数かな?)、

コネクションを格納しておけばよい。

 

実際1つのコネクションでは、切断した時の影響が大きいので、

たとえば、a-z0-9の36個とかでもよいかなと。

 

また、MySQLのようなマルチスレッドでは、

コネクションの共用は気を付けておいたほうがよい。

なぜなら、トランザクションがあるから。

 

コネクションをアプリケーション内に維持できる場合は、

こんな風に考えて実装すると効果的だと思います。

 

apache+phpでは無理だけど、

python+wsgiとかではできそう。(railsはわからん)

 

以上

投稿日時:2015年03月20日 15:19   カテゴリー:redis   [コメントがあればどうぞ]

awsのELBを使うと、

websocketの場合、

handshakeから60秒がタイムアウトだと思っていた。

 

しかし、最後の通信(おそらく受信も含む)から60秒がタイムアウトであった。

60秒無通信っていうのは受信も考えるとあまりないかなと。。

 

また、ELBのタイムアウトも延長できるみたいだから、

websocketを通す場合は、タイムアウトを延長するのも

一つの手段にはなるかなと。

 

投稿日時:2015年03月20日 14:30   カテゴリー:aws, websocket   [コメントがあればどうぞ]