Добрый день, возможно некоторые из приведенных ниже деталей окажутся лишними, но я не хочу ничего упустить.
Дано: Сам сервер является порождение KVM виртуализации. Сервер minecraft крутящийся на разделе с raiserfs. Базы данных MySQL на ramdisk.
Linux oktavian.minecraft-gs.com 2.6.32-220.13.1.el6.x86_64 #1 SMP Tue Apr 17 23:56:34 BST 2012 x86_64 x86_64 x86_64 GNU/Linux
Проблема в том, что при взаимодействии плагинов на сервере с базой данных по iotop примерно такая картина:
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
468 be/3 root 0.00 B/s 0.00 B/s 0.00 % 99.29 % [jbd2/dm-0-8]
1771 be/4 mysql 0.00 B/s 102.13 K/s 0.00 % 6.19 % mysqld --basedir=/usr --datadir=/var/lib/mysql/ --user=mysql --log-error=/v~og --pid-file=/var
Что приводит к остановке операций во всем игровом мире. В top все выглядит примерно так:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
13 root 20 0 0 0 0 S 6.3 0.0 0:29.55 ksoftirqd/2
1689 minestar 20 0 9852m 774m 11m S 4.7 6.5 4:56.89 java
9 root 20 0 0 0 0 S 2.3 0.0 0:33.19 ksoftirqd/1
4 root 20 0 0 0 0 S 0.3 0.0 0:07.63 ksoftirqd/0
17 root 20 0 0 0 0 S 0.3 0.0 0:16.76 ksoftirqd/3
468 root 20 0 0 0 0 D 0.3 0.0 0:02.74 jbd2/dm-0-8
И мне совершенно непонятно каким образом процесс [jbd2/dm-0-8] забивает 99% IO. Гугл утверждает, что это процесс журналирования. Но ничего не менялось и при помещении самого сервера на ramdisk.
Я пробовал менять файловую систему на которой лежат файлы сервера на все начиная от xfs, заканчивая tmpfs. Ковырял ключи джава машины. Выключал журналирование оставшихся разделов на ext4. Но никакого эффекта не ощутил.
Привожу информацию которая может оказаться полезной.
tmpfs /var/lib/ramsql tmpfs size=500m 0 0
/dev/mapper/vg_oktavian-Oktavian_lvm /opt/ reiserfs defaults 0 0
/dev/mapper/vg_oktavian-lv_root / ext4 defaults 1 1
UUID=e378765f-073e-4407-b83b-f968570a8aa6 /boot ext4 defaults 1 2
/dev/mapper/vg_oktavian-lv_home /home ext4 defaults 1 2
/dev/mapper/vg_oktavian-lv_swap swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
#StartServerScrip
java -server -XX:+HeapDumpOnOutOfMemoryError -Xmx7G -XX:UseSSE=4 -XX:+UseParallelGC -XX:ParallelGCThreads=8 -XX:+OptimizeStringConcat -XX:+UseStringCache -XX:+UseLargePages -XX:+UseFastAccessorMethods -XX:+AggressiveOpts -XX:+UseCompressedOops -jar /opt/minecraft_server/craftbukkit-1.2.5-R1.0.jar
#/etc/my.cnf
datadir=/var/lib/mysql/
#datadir=/var/lib/ramsql/
socket=/var/lib/mysql/mysql.sock
user=mysql
log = /var/log/mysql.log
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=1
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
java version "1.6.0_22"
OpenJDK Runtime Environment (IcedTea6 1.10.6) (rhel-1.43.1.10.6.el6_2-x86_64)
OpenJDK 64-Bit Server VM (build 20.0-b11, mixed mode)