ディスクキャッシングを使用したリモートサーバー(同じLAN上)でのMemcachedのパフォーマンスを知りたいです。Memcachedはスケーラブルなキャッシュソリューションであることに加えて、ディスクキャッシングと比較した場合のパフォーマンスに関してMemcachedを使用する利点はありますか。
よろしく、Mugil。
私の個人的な経験から、memcachedはディスクキャッシュほど高速ではないことがわかりました。これはOSのディスクIOのキャッシュが原因だと思いますが、memcachedは「スケーラブルな」キャッシュを可能にします。つまり、同じキャッシュデータにアクセスするサーバーが複数ある場合は、スケーリングされます(特に、memcachedのCPUオーバーヘッドは非常に低いため) PHPへ)。一度に複数のマシンがディスクキャッシュにアクセスできるようにする唯一の方法は、ネットワークマウントであり、これによりアクセスの速度が確実に低下します。また、ファイルキャッシングで心配しなければならないもう1つのことは、ディスクが飽和状態になるのを防ぐためのガベージコレクションです。
サイトの規模が大きくなると、後で気が変わったくなるかもしれません。そのため、どのような選択をした場合でも、キャッシュラッパーを使用して、メソッドを簡単に変更できます。Zendは優れたAPIを提供します。
読み取りはほぼ同じ速度になります(OSは頻繁にアクセスされるファイルをキャッシュするため)...違いは書き込みにあります。memcachedを使用すると、RAMを書き込むだけで済みます。しかし、ファイルストレージを使用すると、少し注意が必要になります。書き込みキャッシュを有効にしている場合は、ほぼ同じ速度になります。ただし、ほとんどのサーバーでは、電源障害が発生した場合の書き込みの信頼性を高めるために、(バッテリーでバックアップされたキャッシュがない限り)オフになっています。したがって、書き込みキャッシュを使用していない場合は、戻る前にディスク上で書き込みを完了する必要があります(サーバーグレードのドライブでは5ミリ秒以上かかる場合があり、デスクトップグレードのハードウェアではそれ以上かかる場合があります)。そのため、ファイルの書き込みはmemcachedよりも大幅に遅くなる可能性があります。
しかし、別のキャビアがあります。ファイルの場合、書き込みたいときは自分でファイルをロックする必要があります。これは、2つのプロセスが同じファイルに書き込もうとした場合、書き込みを連続して完了する必要があることを意味します。memcachedを使用すると、これら2つの書き込みはキューにプッシュされ、受信した順序で発生しますが、書き込みプロセス(PHP)は実際のコミットを待つ必要はありません...