C++で実装されている負荷分散されたWeb対応アプリケーションのバックエンドとして、GDBMキー値データベースがあります。アプリケーションによって提供されるデータは非常に大きくなっているので、管理者はGDBMファイルをWebサーバ上のローカルストレージから、NFSマウントされた大きな共有ファイルシステムに移動しています。GDBMの代替またはサクセサ
これはパフォーマンスに影響します。私たちのパフォーマンステスト(テスト環境)は、ページの読み込み時間が数百ミリ秒(ローカルディスクの場合)から数秒(NFS、ローカルネットワーク上)にジャンプし、時には30秒にもなる場合があります。問題の大部分は、アプリケーションがGDBMファイルからランダムにたくさんの読み込みを行い、NFSでの処理が遅くなることです(これは、フロントエンドとバックエンドの両方で、さらに悪化します)より多くのネットワークハードウェア)、データベースがさらに大きくなるにつれて、
これは重要なアプリケーションではありませんが、パフォーマンスを向上させ、アプリケーション開発者の時間とUnixの管理者を含むいくつかのリソースを利用したいと思います。私の主な制約は、時間はわずか数週間のリソースを持っていることです。
私はそれを見ると、私のオプションは以下のとおりです。
は、チューニングパラメータによって、NFSのパフォーマンスを向上させます。私の本能はそれほど多くは得られませんが、以前は間違っていました。NFSチューニングについてはあまりよく分かりません。
memcachedbまたはTokyo Cabinetなどの異なるキー値データベースに移動します。
NFSを他のプロトコルに置き換えてください(iSCSIは言及されていますが、私はそれに精通していません)。
どのようにこの問題にアプローチする必要がありますか?