トップ «前の日(06-28) 最新 次の日(06-30)» 追記   RSS 1.0 FEED  

Journal InTime


2001-06-29 (Fri)

_ mod_ruby

なかなかバグがなくならない。


2004-06-29 (Tue)

_ [ソフトウェア] nadokaさん

loquiとplumのマルチサーバの相性が悪い(privがうまく動かない)ので、 nadokaさんに転向することにした。

もうちょっと様子を見て問題なさそうだったら、plumの方はとめよう。


2005-06-29 (Wed)

_ [その他] Reality Bites

いいニュースがあったと思ったら、悪いニュースが。 現実は厳しい。

_ [会社][ソフトウェア] Rast 0.2.0

リリースされました。

バージョン番号のマイナーが上がっているけど、0.1.1からあまり大きな変更はないようです。


2006-06-29 (Thu)

_ [tDiary] ツッコミの日数制限

自分が引っかかったので、とりあえず3日から14日に変更。

日記の日にちから数えるんじゃなくて、投稿日から数えてくれるとうれしいかも。


2012-06-29 (Fri)

_ [KLX125] テールランプが溶けた

溶けたテールランプ

テールランプが点灯しなくなったのでバルブを替えようと思ったらテールランプが溶けていた。どうやら社外品のフェンダーレスキットのテールランプの設計上の問題のようだ。

となあえず純正に戻したけど意外と悪くないのでこのまま行こうかな。

純正テールランプ


2014-06-29 (Sun)

_ [プログラミング] RedisのPub/Subの遅いsubscriber問題

RedisのPub/Subを試していて、subscriber側の受信が遅いとredis-server上のキューが伸び続けて、メモリ使用量が増大し続けてしまう問題にはまった。

以下のようにひたすらpublisher側でひたすらデータを送るようにしておいて、

require "redis"
require "json"

redis = Redis.new(timeout: 0)

redis.subscribe("foo") do |on|
  on.message do |channel, msg|
    i = msg.slice(/(\d+):/, 1)
    p i
    sleep(1.0)
  end
end

subscriber側で以下のようにsleepすると、どんどんredis-serverが太っていく。

require "redis"
require "json"

redis = Redis.new(timeout: 0)

redis.subscribe("foo") do |on|
  on.message do |channel, msg|
    i = msg.slice(/(\d+):/, 1)
    p i
    sleep(1.0)
  end
end

調べてみると、Redis 2.6以降ではバッファサイズの上限を指定でき、上限に達したクライアントは切断されるようだ。

たまたまUbuntu 14.04に上げたところだったので確認すると、redis-server-2:2.8.4-2では最初からredis.confで以下のように設定されていた。

client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60

この環境で上記のスクリプトを試すと、たしかに以下のように切断される。

$ ruby sub.rb
"0"
"1"
"2"
"3"
"4"
"5"
"6"
"7"
"8"
"1681"
"1682"
"1683"
"1684"
"1685"
"1686"
"1687"
"1688"
"1689"
/home/shugo/local/lib/ruby/gems/2.2.0/gems/redis-3.1.0/lib/redis/client.rb:233:in `rescue in io': Connection lost (ECONNRESET) (Redis::ConnectionError)

番号が飛んでいるところを見ると、上限に達してもすぐに切断されるわけではないようだ。

結論: ソフトウェアに何か問題があったらとりあえず最新版を確認しましょう。