質問

を使用していMerb::キャッシュ保存txt/xmlとしていることにお気づきなってもらえまmerbs走行の大量のtcpソケットをしていまopen--これが主要なパフォーマンスの課題です。

lsof | grep 11211 | wc -l
494
merb      27206       root   71u     IPv4   13759908                 TCP localhost.localdomain:59756->localhost.localdomain:11211 (ESTABLISHED)
merb      27206       root   72u     IPv4   13759969                 TCP localhost.localdomain:59779->localhost.localdomain:11211 (ESTABLISHED)
merb      27206       root   73u     IPv4   13760039                 TCP localhost.localdomain:59805->localhost.localdomain:11211 (ESTABLISHED)
merb      27206       root   74u     IPv4   13760052                 TCP localhost.localdomain:59810->localhost.localdomain:11211 (ESTABLISHED)
merb      27206       root   75u     IPv4   13760135                 TCP localhost.localdomain:59841->localhost.localdomain:11211 (ESTABLISHED)
merb      27206       root   76u     IPv4   13760823                 TCP localhost.localdomain:59866->localhost.localdomain:11211 (ESTABLISHED)
merb      27206       root   77u     IPv4   13760951                 TCP localhost.localdomain:52095->localhost.localdomain:11211 (ESTABLISHED)

など---。

私の関連するコード:

    if !exists?(:memcached) then
      register(:memcached, Merb::Cache::MemcachedStore, :namespace => 'mynamespace', :servers => ['127.0.0.1:11211'])
    end

&&

    when :xml
      unless @hand_xml = Merb::Cache[:memcached].read("/hands/#{@hand.id}.xml")
        @hand_xml = display(@hand)
        Merb::Cache[:memcached].write("/hands/#{@hand.id}.xml", @hand_xml)
      end
      return @hand_xml

このコード直出しに誤りがあった私は、私の間違い版memcache??

していまmemcached1.2.8 っています:

libmemcached-0.25.14.tar.gz memcached-0.13.逸品

このような運転ん..

役に立ちましたか?

解決

私はいくつかのものを考え出しkは..

1)あなたがepollをまたは何か他のものを利用して、ライブラリを使用していると仮定するとmemcachedのために接続されているソケットの数百/数千人を持っているために、合理的なことができます - あなたは私のようなルビーを使用している場合しかし、私はLIBを認識していませんよそれは、選択以外の何か()やpoll()を利用し - したがって、これは、この質問/すぐに出たい。

打ちます あなたは私のようなものであれば、

2)あなただけの今実行している1台のmemcachedサーバを持っていると雑種のカップルは/ PROBすべきrequests..thereforeあなたのmemcache接続の世話をして走り回って薄くなります。雑種犬の数よりも多くなることはありませ/あなたは(唯一のものの1または2組のキャッシュあなたと仮定して)実行している薄くなる - 私の場合でした。

ここで修正です。

は、使用しているlibに実際に何memcacheのをラップmemcachedの宝石ではなく、Merbの:: Cacheを介してセットアップmemcacheの(

MMCACHE = Memcached.new("localhost:11211")

を取得/あなたの値を設定します:

  @cache = MMCACHE.clone
  begin
    @hand_xml = @cache.get("/hands/#{@hand.id}.xml")
  rescue
    @hand_xml = display(@hand)
    @cache.set("/hands/#{@hand.id}.xml", @hand_xml)
  end
  @cache.quit

後ろに座ると、あなたがこれを行うと、今風邪原因の一つを飲みます:

lsof | grep 11211 | wc -l

あなたの代わりに2036年の2または3のようなものを参照してください!

memcacheの接続は永続的であるために、それは

で開始することも珍しくありませんことを私にでcluingための岩礁に

小道具

他のヒント

いつも助けることができるようになっ必要な物語になる。お久しぶりです、どらすこです。

時間があったクラスターの10apacheのsslサーバに設定されてちょうど100スレッドです。また、クラスターの10memcachedサーバを同一ボックスは、すべての 穏やかに暮ら.両apacheのmemcachedのたガード monitました。

その後、王の設置第11回apacheのsslサーバmemcachedの始めに再起動ランダムに数時間おきに!キング究活動を開始しかった?があったバグのphp memcacheのモジュールの文書とそのデフォルトのコンストラクタのmemcacheのconnectionオブジェクトが ない 根強いるのだそうでした。何が起こった全てのphpスレッドがとり様につき1000)を開設して接続毎に瞬時にプールがえる必要がなかったので開催されます。また10*100つべてのmemcachedサーバーでしたが、11のサーバーで1100として1024<1100.最大数のソケットのためのmemcached1024.すべてのソケットした、monitデーモンきっ再開のmemcached.

各ストーリーについてないです。では、何らの王なのか。た障害者の持続的な接続、彼らはすべての幸せに暮らしましたとさは、接続数のクラスターをピークに5.サーバはいたhudgeデータ量で高まって1000スペアソケットで安くしたとの交渉、memcacheの接続毎ます。

誠に申し訳ございませんがわからないにrubyのように認識していチ額のスレッドまたはキャッシュすので間違っています。

幸運を祈っています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top