Всем привет.
Стоит на сервере FreeBSD 7.2 amd64.
В сервере два идентичных SATA харда по 1ТБ.
Используется gmirror для RAID1.
# gmirror list
Geom name: gm0
State: COMPLETE
Components: 2
Balance: round-robin
Slice: 4096
Flags: NONE
GenID: 0
SyncID: 1
ID: 1010752839
Providers:
1. Name: mirror/gm0
Mediasize: 1000204885504 (932G)
Sectorsize: 512
Mode: r5w5e6
Consumers:
1. Name: ad0
Mediasize: 1000204886016 (932G)
Sectorsize: 512
Mode: r1w1e1
State: ACTIVE
Priority: 0
Flags: DIRTY
GenID: 0
SyncID: 1
ID: 3257944739
2. Name: ad2
Mediasize: 1000204886016 (932G)
Sectorsize: 512
Mode: r1w1e1
State: ACTIVE
Priority: 0
Flags: DIRTY
GenID: 0
SyncID: 1
ID: 3627728499
Сервер используется для веб-сайта с посещаемостью ~40-50k посетителей.
Много статики: аватарки, фотографии из галерей и прочее.
Из ПО стоит mysql5, php5.2 (php-fpm), nginx 0.8.54.
Проблема, а точнее вопрос в следующем.
Когда набираю gstat, то вижу следующую ситуацию:
dT: 1.006s w: 1.000s
L(q) ops/s r/s kBps ms/r w/s kBps ms/w %busy Name
136 315 2 20 257.0 313 6538 827.8 99.8| ad0
82 367 1 16 114.2 366 7779 820.9 100.0| ad2
0 0 0 0 0.0 0 0 0.0 0.0| ad0s1
137 316 3 36 209.4 313 6538 828.6 99.8| mirror/gm0
0 18 18 215 0.0 0 0 0.0 0.1| md2
0 0 0 0 0.0 0 0 0.0 0.0| ad2s1
137 316 3 36 209.4 313 6538 829.1 99.8| mirror/gm0s1
0 0 0 0 0.0 0 0 0.0 0.0| mirror/gm0s1a
0 0 0 0 0.0 0 0 0.0 0.0| mirror/gm0s1b
0 0 0 0 0.0 0 0 0.0 0.0| mirror/gm0s1c
0 0 0 0 0.0 0 0 0.0 0.0| mirror/gm0s1d
0 0 0 0 0.0 0 0 0.0 0.0| mirror/gm0s1e
137 316 3 36 209.5 313 6538 829.4 99.8| mirror/gm0s1f
Такая ситуация чередуется со следующей:
L(q) ops/s r/s kBps ms/r w/s kBps ms/w %busy Name
3 55 55 739 12.8 0 0 0.0 51.4| ad0
0 57 57 757 15.6 0 0 0.0 58.7| ad2
0 0 0 0 0.0 0 0 0.0 0.0| ad0s1
3 111 111 1496 14.5 0 0 0.0 75.5| mirror/gm0
0 848 120 1373 0.2 727 11373 4.6 3.9| md2
0 0 0 0 0.0 0 0 0.0 0.0| ad2s1
3 111 111 1496 14.5 0 0 0.0 75.6| mirror/gm0s1
0 0 0 0 0.0 0 0 0.0 0.0| mirror/gm0s1a
0 0 0 0 0.0 0 0 0.0 0.0| mirror/gm0s1b
0 0 0 0 0.0 0 0 0.0 0.0| mirror/gm0s1c
0 0 0 0 0.0 0 0 0.0 0.0| mirror/gm0s1d
0 0 0 0 0.0 0 0 0.0 0.0| mirror/gm0s1e
3 111 111 1496 14.6 0 0 0.0 75.9| mirror/gm0s1f
Иногда %busy падает до 10-20, но это рано утром.
Днем держится больше 60-70, а вечером всегда 100%.
Сделал диск в памяти (md2) на 4гб, туда нгинкс записывет горячую статику, каждые полчаса диск подчищается.
Без диска ситуацию еще хуже, в gstat'e почти всегда 100%.
Вот топ в момент нагрузки по gstat'у 100%.
# top -m io -o total
last pid: 29257; load averages: 3.13, 3.48, 3.47
146 processes: 10 running, 121 sleeping, 15 waiting
CPU: 27.9% user, 0.0% nice, 7.2% system, 0.7% interrupt, 64.1% idle
Mem: 4730M Active, 2152M Inact, 713M Wired, 185M Cache, 399M Buf, 108M Free
Swap: 4096M Total, 432K Used, 4095M Free
PID USERNAME VCSW IVCSW READ WRITE FAULT TOTAL PERCENT COMMAND
51 root 2 7 0 357 0 357 42.00% syncer
26704 www 1124 136 134 51 0 185 21.76% nginx
26705 www 2035 98 120 13 0 133 15.65% nginx
829 mysql 2742 974 5 4 0 9 1.06% mysqld
29167 www 292 172 4 0 0 4 0.47% php-cgi
29193 www 264 111 3 0 0 3 0.35% php-cgi
29023 www 277 193 2 0 0 2 0.24% php-cgi
Закономерность следующая, когда в gstat все зеленое (до 50%), то в топе два воркера nginx'а кушают около 10-20%, все окей.
Однако когда в gstat'е поднимается до 100%, то топ показывает >80% на процессе syncer.
теперь iostat:
# iostat -w 1
tty ad0 ad2 cpu
tin tout KB/t tps MB/s KB/t tps MB/s us ni sy in id
0 1062 33.70 132 4.35 33.53 133 4.36 20 0 5 1 75
0 652 33.92 74 2.44 38.22 80 2.97 51 0 13 3 33
0 586 32.44 113 3.59 30.43 111 3.31 70 0 14 3 13
0 562 27.69 83 2.26 30.32 87 2.59 69 0 17 2 12
0 576 32.21 93 2.94 34.35 97 3.27 48 0 12 3 37
0 592 24.29 88 2.10 26.15 92 2.36 22 0 5 2 71
0 583 42.11 125 5.15 41.31 109 4.41 23 0 9 2 66
0 541 20.16 64 1.25 25.75 78 1.97 19 0 7 1 73
0 528 17.20 97 1.64 16.15 95 1.50 26 0 5 1 68
0 519 6.86 573 3.84 6.86 573 3.84 10 0 3 1 85
0 558 24.55 79 1.91 25.11 80 1.97 23 0 6 2 68
0 554 19.26 91 1.72 19.91 91 1.78 14 0 6 2 78
0 547 26.82 97 2.55 28.62 99 2.78 26 0 6 1 67
0 584 11.68 81 0.93 13.39 81 1.07 10 0 3 2 85
0 610 18.08 72 1.26 16.44 72 1.15 15 0 4 1 80
0 510 19.23 57 1.06 17.96 57 0.99 22 0 6 1 71
0 586 39.15 61 2.32 34.03 58 1.92 19 0 5 1 75
0 534 20.92 24 0.49 19.25 24 0.45 12 0 3 1 85
0 537 19.27 30 0.56 22.41 29 0.63 14 0 4 1 81
0 553 16.25 48 0.76 13.21 48 0.62 17 0 4 1 77
0 480 16.40 40 0.64 15.18 39 0.57 22 0 4 0 74
0 502 19.43 63 1.19 22.48 66 1.44 18 0 3 0 78
0 593 10.45 22 0.22 17.64 22 0.38 23 0 5 1 71
0 591 21.47 86 1.81 23.40 85 1.95 26 0 6 2 66
0 592 18.65 97 1.77 18.55 97 1.76 27 0 6 1 66
0 534 21.63 145 3.06 21.14 144 2.97 14 0 5 2 79
0 560 16.30 33 0.52 18.06 33 0.58 16 0 3 1 80
0 505 16.26 758 12.04 16.35 778 12.42 8 0 5 2 86
0 537 16.00 310 4.84 16.00 322 5.03 0 0 0 0 99
0 353 16.00 298 4.66 16.00 309 4.83 0 0 1 0 99
0 363 24.30 339 8.04 24.92 362 8.80 0 0 0 1 99
0 332 20.38 334 6.64 18.95 306 5.66 1 0 1 0 99
0 343 18.62 291 5.29 18.01 307 5.40 8 0 3 0 89
0 462 19.44 293 5.56 21.84 241 5.15 18 0 3 1 79
0 552 36.00 57 1.99 34.60 57 1.91 71 0 16 2 11
0 540 15.56 94 1.43 17.98 103 1.82 70 0 16 2 12
0 572 25.52 99 2.48 28.06 102 2.80 21 0 6 2 72
0 583 42.38 100 4.15 36.46 86 3.08 22 0 6 1 71
0 508 27.89 76 2.06 28.40 75 2.07 20 0 6 1 73
0 498 56.06 155 8.49 54.32 153 8.12 13 0 5 1 82
0 489 25.43 49 1.21 26.61 49 1.27 17 0 5 2 76
0 536 15.60 80 1.23 15.43 80 1.21 26 0 8 1 65
0 529 8.82 342 2.94 8.74 340 2.90 24 0 6 1 69
0 532 13.12 50 0.64 11.80 49 0.56 16 0 4 1 79
0 530 21.39 79 1.64 19.40 79 1.51 32 0 9 1 59
0 560 17.15 71 1.18 17.86 69 1.20 14 0 5 1 79
0 573 24.71 76 1.82 35.08 92 3.16 18 0 6 0 75
0 684 20.26 84 1.67 18.32 81 1.46 31 0 6 2 61
0 568 11.05 79 0.86 10.73 79 0.83 28 0 6 2 64
0 569 21.92 94 2.02 25.18 96 2.37 23 0 6 2 68
Так вот хочется понять, нормальная ли это ситуация или здесь явно проблема и следует ли искать узкое место?
Сайт периодически задумывается на секунду-две, хочется понять, в дисках ли дело?
если смотреть top, то там частенько один из процессов nginx'а висит в biord'е - это же свидетельствует о проблемах с диском?
в nginx'е включал open_file_cache, по-разному пробовал его конфигурировать -- ситуация толком не меняется.
пробовал в нгинксе отключать все картинки из галерей пользователей, т.е. возвращать 404, если запрашивается картинка из папки с фотографями. Нагрузка сильно падает по gstat'у, держится около 20-30%. то есть можно сказать, что дело именно в статике и именно в большом кол-ве фотографий.
Папка с фотогорафями разбита на подпапки, по айдишнику. То есть фото из галереи 123456 лежит в папке /12/34/56/.
надо сказать, что правильный путь к картинке делает сам нгинкс спомозью регулярки. То есть у юзера в src картинки прописано "site.ru/img/123456/ab.jpg", а нгинкс преобразует к "/img/12/34/56/ab.jpg". но ведь пара регулярок в конфиге нгинкса не могут быть причиной этих проблем?
Всем заранее спасибо за ответы!