4

このスレッドによると(信頼性は低いと思います) memcached はディスクを使用せず、仮想メモリも使用しません。

私の質問は次のとおりです。

  1. これは本当ですか?

  2. もしそうなら、memcached は、割り当てられたメモリが決してディスクにオーバーフローしないことをどのように保証するのでしょうか?

4

2 に答える 2

4

memcached2つのメカニズムを介してスワップすることを回避します。

  1. マシンがスワップに移行してはならないことをシステム管理者に通知します。これにより、管理者はマシンのスワップスペースを構成したり(私には悪い考えのように思えます)、実行中のアプリケーションのメモリ制限を構成して、スワップに何も入らないようにすることができます。(だけmemcachedでなく、すべてのアプリケーション。)

  2. mlockall(2)システムコールを使用して(-k)、すべてプロセスのメモリが常にメモリにロックされるようにすることができます。これはコントロールを介して仲介されるsetrlimit(2) RLIMIT_MEMLOCKため、管理者は、たとえばユーザーアカウントが通常よりもはるかに多くのメモリをロック/etc/security/limits.confできるように変更する必要があります。memcached(ロックされたメモリは、信頼できないユーザーアカウントがシステムの残りの空きメモリを枯渇させるのを防ぐために仲介されます。)

これらのステップは両方とも、マシンのポイントが実行することであり、おそらくそれ以外はほとんどないと仮定すると、公平です。memcached大規模な展開では複数(または多数)のマシンが専用になるため、これは多くの場合、公正な仮定memcachedです。

于 2012-06-01T22:38:18.953 に答える
1

一定量のメモリを使用するように memcached を構成します。そのメモリがいっぱいになると、memcached は古いデータを削除して制限を超えないようにします。それはとても簡単です。

于 2012-06-01T22:52:59.597 に答える