LINUX.ORG.RU
ФорумAdmin

нагрузка на сервер


0

1

постараюсь максимально подробно объяснить всю ситуацию.
у меня дома на отдельной машине стоит сервер minecraft (игра такая).
домашний комп и сервер подключаются к интернету через роутер.
на сервере кроме minecraft ещё стоит nginx, сайтик на fastCGI и mysql.
ОС gentoo.

в maincraft есть такая вещь как скины и плащи, картинки хранятся на моём сервере (они в среднем 100кб весят) и запрашиваются игровым клиентом, но видимо клиент косячный и судя по логам nginx эти картинки запрашиваются постоянно, доходит до 200 запросов в секунду (в сумме от всех клиентов).

когда большой онлайн сайт и сервер начинают дико тормозить, на сайт заходит с задержкой в 10 секунд, даже ssh тормозит.
при этом по выводу top процессор занят на 50-70% и оперативки хватает. интернет канал входящая 60 мбит в сек, исходящая 70 мбит в сек, то же должно хватать с запасом.

вопросов несколько:
1) 200 запросов к nginx в секунду существенно или на это можно не обращать внимание?
2) лаги могут быть связаны с роутером?
3) как вообще можно протестировать где слабое место?

★★★★★

3) как вообще можно протестировать где слабое место?

Попробуй нагрузить сервер с домашнего компа, именно запросами к Nginx. Они же у тебя рядом, в одной сети, я так понял, да? Посмотри на цифры, может что-то прояснится.

jessey ()
Ответ на: комментарий от jessey

да в одной сети, просто написать скриптик который будет запрашивать главную страницу сайта и посмотреть сколько раз в секунду он успеет это сделать?

TDrive ★★★★★ ()
Ответ на: комментарий от TDrive

Всё проще, погугли про ab (apache benchmark, входит в apache-utils вроде) и подобные утилиты.
Хочется нагенерить ещё мыслей, но почему-то ничего больше не могу придумать :(

jessey ()
Ответ на: комментарий от Mr_Alone

ab -c 100 -n 50000 http://192.168.0.3:80/skins/tdrive.png показал

 
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 192.168.0.3 (be patient)
Completed 5000 requests
Completed 10000 requests
Completed 15000 requests
Completed 20000 requests
Completed 25000 requests
Completed 30000 requests
Completed 35000 requests
Completed 40000 requests
Completed 45000 requests
Completed 50000 requests
Finished 50000 requests


Server Software:        nginx/1.0.6
Server Hostname:        192.168.0.3
Server Port:            80

Document Path:          /skins/tdrive.png
Document Length:        1367 bytes

Concurrency Level:      100
Time taken for tests:   10.127 seconds
Complete requests:      50000
Failed requests:        0
Write errors:           0
Total transferred:      78900000 bytes
HTML transferred:       68350000 bytes
Requests per second:    4937.38 [#/sec] (mean)
Time per request:       20.254 [ms] (mean)
Time per request:       0.203 [ms] (mean, across all concurrent requests)
Transfer rate:          7608.58 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    7   3.0      8      16
Processing:     1   14  11.3     11     231
Waiting:        1   13  11.3     11     231
Total:          4   20  10.5     19     235

Percentage of the requests served within a certain time (ms)
  50%     19
  66%     20
  75%     20
  80%     21
  90%     23
  95%     26
  98%     32
  99%     35
 100%    235 (longest request)

я так понял с 50000 запросов он обработал за 10 секунд, значит 200 запросов в секунду не существенно?

а если то же самое но на внешний ip то очень долго думал а после 10000 выдал apr_socket_recv: Connection timed out (110)

значит роутер не справляется?

TDrive ★★★★★ ()
Ответ на: комментарий от TDrive

Requests per second: 4937.38 [#/sec]

Ну да, реальная средняя скорость обработки запросов ~5000 запросов/секунду. Сервер не задыхается, думаю.

значит роутер не справляется?

Не знаю как роутер, но я замечал на своих серверах что если запросы приходят извне, то их кол-во в секунду падает значительно, по сравнению с запросами из той-же сети. И тут уже я не знаю, канал-ли это, роутер, или DNS или ещё что-то.

jessey ()
Ответ на: комментарий от TDrive

значит роутер не справляется?

Судя по всему да. Но чтоб быть на 101% уверенным, я бы попробовал другой поставить.

Mr_Alone ★★★★★ ()

в maincraft есть такая вещь как скины

Хорошо хоть не maincampf XD (я знаю, как пришется правильно)

Хм.. 200 x 100 килобайт = 20 Мб в секунду = 160 Мбит/с без учета накладных расходов. Не многовато ли? Или картинки по 100 килобит все-таки, т. е. по 12,5 кбайт?

А еще мне казалось, что роутер лучше проверять именно с внешнего по отношению к нему IP, иначе он пакет должен сам на себя переслать, и тут возможны разные спецэффекты. Но здесь я не спец, просто вроде где-то я на такое натыкался (не на лоре ли?).

Kiborg ★★★ ()
Ответ на: комментарий от Kiborg

200 x 100 килобайт

Посмотри внимательно на тест, что ТС проводил с файлом.

Document Length: 1367 bytes

Чуть больше килобайта.

Mr_Alone ★★★★★ ()
Ответ на: комментарий от Mr_Alone

/skins/tdrive.png

Может это какая-нибудь полупрозрачная гифка со скруглённым уголком для вёрстки? Или для менюшки. ТС же не сказал что запрашивал именно одну из тех картинок.

jessey ()
Ответ на: комментарий от Mr_Alone

Ну кто знает, может клиент игры устанавливает соединение на каждый чих. Он же и картинки не кеширует, как я понял, почему нет?

jessey ()
Ответ на: комментарий от jessey

ТС же не сказал что запрашивал именно одну из тех картинок.

ТС явно написал, что локально тест проходит без проблем, как только с внешнего ip идёт этот же тест, даже 10 000 не обрабатывается. Причем тут скруглённые углы или гифки?

Mr_Alone ★★★★★ ()
Ответ на: комментарий от Mr_Alone

Ты наркоман похуже меня штоле? При том, что ты спросил отчего такой маленький файл. Я и предположил что это незначительная деталька верстки.

jessey ()
Ответ на: комментарий от jessey

да с весом картинки это я преувеличил) там от 1 до 10 кбайт.

днс тут не причём потому что я по внешнему ip а не по доменному имени тест делал.

а вообще есть смысл пробовать другой роутер или лучше думать над тем что бы сервер подключать на прямую а остальные ПК к серверу?

TDrive ★★★★★ ()
Ответ на: комментарий от TDrive

да и ещё вопрос я так понял роутер не справляется именно с количеством запросов по этому вариант поработать над клиентом что бы не запрашивал картинки так часто тоже может помочь?

TDrive ★★★★★ ()
Ответ на: комментарий от jessey

При том, что ты спросил отчего такой маленький файл.

Нет, всё же ты наркоман. Я нигде не спрашивал про маленький размер. :-)

Mr_Alone ★★★★★ ()
Ответ на: комментарий от TDrive

а вообще есть смысл пробовать другой роутер или лучше думать над тем что бы сервер подключать на прямую а остальные ПК к серверу?

Всё сильно зависит. Можно сервер поставить на внешний IP, и с него раздавать Инет на другие компы. А может у тебя рутер какой специальный от провайдера, и Инет будет только с ним работать.

Лично я бы с сервера раздавал Инет внутрь, оставив его с внешним IP, ибо зачем плодить лишние сущности в виде рутера?

Mr_Alone ★★★★★ ()
Ответ на: комментарий от TDrive

а если то же самое но на внешний ip то очень долго думал а после 10000 выдал apr_socket_recv: Connection timed out (110)

посмотри netstat -ntp | wc -l возможно кончаются tcp порты из-за висящих в time_wait соединений, если это так то в общем случае должно помочь:
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
в /etc/sysctl.conf

Delay ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.