サーバーを最大限に活用する方法としての先進技術

エントリー



ただ美しいrrdtool =)

おもしろいですが、プログラマーが製品を開発するとき、彼は2000人が一度に1つのボタンを押すことができるかどうかという問題についてほとんど考えません。 しかし、無駄に。 彼らができることが判明した。 奇妙なことに、そのようなプログラマーによって書かれたエンジンのほとんどは、高負荷の下で非常にひどく動作します。 誰が考えたでしょうが、インデックスではなく、余分なINSERTや湾曲した再帰関数だけで、負荷平均をほぼ1桁上げることができます。



この記事では、プロジェクトの開発者が、同じサーバーからPentium 4 HT / 512Mb RAMを圧縮し、フォーラムで最大700人のユーザーとトラッカーで最大120,000人のユーザーを同時に保持する方法を説明します。 はい、このプロジェクトは急流トラッカーです。 著作権と権利についての会話はすぐに控えることをお勧めします。興味はありませんが、本当に面白いのはHighLoadです。



最初に、プロジェクトについて説明します。



TorrentPierエンジンの通常のトレントトラッカー(別名phpbb 2.x)



それは実質的にランプです



手短に言えば、私たちが連続して行ったステップにすぐに署名します。



各項目についてさらに詳しく



サーバーへのオペコードキャッシュのインストール



彼は常に必要です! php-cacheをインストールすると 、300%+パフォーマンスが得られ、15分かかります。

キャッシュは異なります: eAcceleratorxCacheAPCなど。...良い速度とその中にユーザーデータを保存する機能により、後者に落ち着きました。



Apacheをnginxに置き換える



Apacheは重くて遅いため、最初はメインWebサーバーとして動作し、その後nginxがその前に置かれ、静的になり、応答をgzipで圧縮しました。 さらに、apginはnginx + php-fpmバンドルを優先して完全に放棄されました(正確には当時spawn_fcgiでしたが、現在はこのオプションの方が優れています)。 当時の束は生産で最も人気があったわけではありませんでしたが、私たちにとってはうまくいきました!



NOT RDBMSでのいくつかの中間サンプルのキャッシュ



RDBMSは悪です。 それは便利ですが、利便性のために支払う必要があります。 この場合、速度。 そしてそれが必要です。 そのため、最も一般的で重要ではないマッスルクエリの結果の一部をAPCにキャッシュしました。 すぐに多くの質問を予測します。なぜmemcachedにないのですか...どのように答えますか... 下痢を除いて最近提供されていません。 私たちのケースでは、APCはTCP接続を使用しないため、APCを選択したため、 何倍も速く動作します。 当分の間、すべてが1つのサーバーで正常に回転し、分散ストレージはそれほど必要ではありません。

RAMにデータを保存する必要のない他のキー/値ストレージを選択できます

しかし、あなたの場合、 memcached / memcachedb / memcacheQが最適なオプションである可能性が非常に高いです。

一般に、phpがグローバル変数、APC、memcachedの値を検索するマルチレベルキャッシュレイヤーを作成するというアイデアがあり、それが初めてSELECTデータベースに入ります。 しかし、私たちは学校/仕事/家族からの自由時間にプロジェクトに携わっているので、まだこれに至っていません。




C ++でのキー部分の翻訳(トラッカーを読む)



120000 nginx, , php, . ? . XBTT TorrentPier'. , 2710 , , , . . . +100000% .

, — 1

input (rl0) output

packets errs bytes packets errs bytes colls drops

20K 0 2.5M 16K 0 1.5M 0 0



PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND

10 root 1 171 52 0K 8K RUN 1 538.6H 47.12% idle: cpu1

6994 root 1 108 0 98140K 96292K CPU0 0 3:57 33.98% xbt_tracker

11 root 1 171 52 0K 8K RUN 0 595.0H 31.20% idle: cpu0

35 root 1 -68 -187 0K 8K WAIT 0 17.1H 21.14% irq21: rl0

12 root 1 -44 -163 0K 8K WAIT 0 482:57 9.96% swi1: net



[root@****] /usr/ports/devel/google-perftools/> netstat -an | wc -l

24147






100 30% . , 8



FreeBSD, -STABLE



FreeBSD 6 4BSD, 7 ULE, SMP

FreeBSD sysctl,



MySQL



, , .

myisam



. tuning-primer.sh

Xtradb. — =)



BB-



phpbb « » bbcod' html. . html /. 2 , .



SphinxSearch



- , . innodb Master-MultipleSlaves myisam, . , , . , , SphinxSearch. . .

-- rss , .





, . . bottleneck . php hook' , munin.



MySQL slow query log



! 20% 80% . . , FORCE INDEX php , 10(!!) .

- . mysqlsla.





LAMP . Core2Duo 2 3 , «», , 1.5 200000 ~500 . LAMP ?

.



, . , !



UPD:




All Articles