1000人以上接続してL2Jを動かすには?
http://www.l2jserver.com/forum/thread.php?threadid=27100
カマのころの記事です。今では変わってる部分もあるかもしれません。
以下要約
1.ハードウェア、OS
投稿者の場合、
CPU: クアッド Xeon 3220 - 2.40GHz (Kentsfield) - 2 x 4MB cache・CPUよりHDD、メモリのが重要
メモリ: 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
・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 = 20AiMaxThread = 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.・L2Jに4Gのメモリあててます・s・
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
・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)ぐらいまでが参考になるかも。この場合はページングファイルを使わなくしてますが。