昔大手サーバやってた人がリアルの知り合いに居て、色々聞いたんだけど、OpenNapの場合
ネックになるのは、メモリと回線だそうな。その人はUNIX系で運営してたんだけど、Win系もほぼ同じ傾向だと言ってた。
CPUってサーバー起動直後のラッシュ時以外は、それほど食わないんだとさ。

そういう意味では、データ構造や検索の仕組みを改善する方向がいいと思う。検索の改善はリソース消費の低減にも関わる。
ソース一通り読んだけど、今のハッシュ検索は、トークン区切りが多いファイルがあればあるほど、リソースを食う。
形態素解析の結果、わずか1文字の単語が切り出されたとしても、10文字の単語が切り出されたとしても
それは両方同じ長さのハッシュコードになってしまう。
ハッシュ関数の仕組みを、今のようなMD5の汎用関数じゃなくて、もっと特化した関数にするか
もしくは、上の方でも言ったけどもっと単純なn-gram検索を使う事かなぁ。これもうまくやればそれほどメモリを食わないと思う。
精度重視でbigramであっても入力文字列に対してたかが2倍。それで部分一致も、マルチランゲッジ化も出来るんだから安い。
単語レベルの一致が欲しいのであれば、可変長にしてしまえばいいだけだし、少なくとも今の方法よりマシだと思う。
今は、ファイル名+固定長のハッシュコードだから、そりゃメモリも食うさ。

あと、リンクサーバーの今の実装もかなり疑問だなぁ。
シーケンス番号でもデータに割り当てて(重複・エラー訂正用)、全サーバーで完全結合すれば良いのに。
リンク先のサーバーが落ちたら、落ちてないサーバーまで割れるんじゃない?この実装だと。
レスポンスの遅いサーバーがあったら、それだけで全体のサーバーのパフォーマンスも落ちちゃうよ。