1000人以上接続してL2Jを動かすには?

http://www.l2jserver.com/forum/thread.php?threadid=27100
カマのころの記事です。今では変わってる部分もあるかもしれません。
以下要約

1.ハードウェア、OS
投稿者の場合、

CPU: クアッド Xeon 3220 - 2.40GHz (Kentsfield) - 2 x 4MB cache
メモリ: 8 GB DDR2 667
HDD: 73GB SA-SCSI 15K RPM
HDD2: 73GB SA-SCSI 15K RPM
LAN: 1000mbit up/down
OS: Windows server 2003 64bit RC2
・CPUよりHDD、メモリのが重要
・HDD1台目でWindowsと他プログラム全て、2台目がデータベース用

2.WindowsServer2003
・システムのプロパティ→詳細設定タブ→設定ボタン→詳細設定タブで「プログラムのパフォーマンスを優先」
・さらに仮想メモリをメモリにあわせて変更

3.MySQL
My.iniのこのあたりをいじる。

default-storage-engine=INNODB  #InnoDBとはMySQLで使えるストレージエンジンの1つです。
     #ストレージエンジンとは「実データへのアクセス処理を主に行う機能」、どんなファイル形式で
     #保存して、どうやってHDDにアクセスするかを決めてる、ってことかな
max_connections=600  #大きい数に
query_cache_size=0   #L2Jでは使わないので0でおk
tmp_table_size=256M  #あなたのとこのデータベースサイズに合わせて大きくしよう
innodb_additional_mem_pool_size=8M   #8M以上に
innodb_log_buffer_size=16M        #16M以上はいらない
innodb_buffer_pool_size=1024M      #DB用に使えるメモリ。投稿者の場合1Gで足りた。
innodb_log_file_size=512M          #上のinnodb_buffer_pool_sizeの半分のサイズで。
innodb_thread_concurrency=60      #CPUパワーにあわせて大きめに
memlock                   #ページングファイルの代わりに物理メモリを使うようにする
innodb_file_per_table            #テーブルごとにファイルが作られるオプション。オプショナルで

4.L2j Threadpoolの設定
・スレッドをいくつ作るか、の設定。CPUがへぼいときはあまり大きな数にしないように。
Option.properties(変わってるかも?)

#====================================================
# Threads configuration - Take care changing this
#====================================================

ThreadPoolSizeEffects = 50
ThreadPoolSizeGeneral = 65

#Default 2
UrgentPacketThreadCoreSize = 10
#Default 4
GeneralPacketThreadCoreSize = 20
#Default 4
GeneralThreadCoreSize = 20

AiMaxThread = 20

5.他の設定
・アイテムログ、チャットログは負荷になるので保存しない
・こんな設定もあり?

# Maximum range mobs can randomly go from spawn point
MaxDriftRange = 0
・これはもちろん無効で
PreciseDropCalculation = False
・自信はないけどこれが無難かな
CoordSynchronize = 1

6.起動時の変数

REM Default parameters for a basic server.
REM java -Xmx1024m -cp ./../libs/*;l2jserver.jar net.sf.l2j.gameserver.GameServer
REM
REM If you have a big server and lots of memory, you could experiment for example with
java -server -Xmx4096m -Xms2048m -Xmn1024m -XX:PermSize=256m -XX:SurvivorRatio=8 -Xnoclassgc -XX:+AggressiveOpts -cp ./../libs/*;l2jserver.jar net.sf.l2j.gameserver.GameServer
・L2Jに4Gのメモリあててます・s・
・32bitJavaだとXmxとXmsは1536以上は設定できないらしい
http://www.atmarkit.co.jp/fjava/rensai3/javavm02/javavm02_2.html

  • Xms:初期ヒープサイズ(全体)
  • Xmx:最大ヒープサイズ(全体)
  • Xmn(-XX:NewSize):New世代領域サイズ

・-serverオプションはCPUコア2つ以上、メモリ2G以上必須です。

以上

後述のレスで64bitLinux環境だとハングすることもしばしばとか。

・わたしのいってる鯖での話しだとルーターもたくさんのコネクションを維持できる必要がある。
PCルータかいいルーターを買うか。

ページングファイルをなくすか、RAMドライブに作るのはどうなんでしょうね。
http://journal.mycom.co.jp/special/2003/gigamemory/
今はメモリが安いのでここを参考にしてWindowsの高速化を図るのもいいかも。
(4)ぐらいまでが参考になるかも。この場合はページングファイルを使わなくしてますが。