Dimka

Рейтинг
228
Регистрация
07.11.2000
WapGraf:
Dimka, практика показывает что SSD выходят из строя чаще всего не по отработке положенного времени.

Т.е. все ставят на серверах Fastvps/Hetzner RAID 1?

А кто-то ставит RAID 10 на двух ssd дисках?

При возможности выбора ДЦ (Нюрнберг и в Фалькенштайн) - какой предпочтительнее (лучше, стабильнее, канал на Россию и т.д.)?

А разумен предлагаемый программный RAID 1 на ssd дисках, предлагаемый во всех тарифных планах? По логике, в зеркальном рейде ssd-диски примерно одновременно выйдут из стоя.

Andreyka:
Третий сервер можно взять на том же hetzner в виде их VPS - будет стоить +5$/мес, это не большие деньги.

Тогда алгоритм такой?

1. VPS и запасной сервер циклически делают ежесекундный опрос основного сервера (таймаут 3 секунды).

2. При ошибке (в т.ч. таймаут) запасной сервер делает дополнительную проверку доступности.

3.1. Если ошибка не повторилась - возврат к п.1.

3.2. Если ошибка повторилась - запросить последний статус проверки у VPS:

3.2.1. VPS не вернул ответ: делаем еще одну попытку, и если опять неудачная - предполагаем проблемы с сетью на запасном сервере: сервер не меняем, уведомление на мобильный /если получится, т.к. проблемы с сетью :)/ и возврат к п.1.

3.2.2. VPS вернул ответ, но результат последней проверки "без ошибки" - предполагаем проблемы с каналом между основным и запасным сервером(?): сервер не меняем, уведомление на мобильный и возврат к п.1.

3.2.3. VPS вернул ответ и результат последней проверки "ошибка": ПЕРЕКЛЮЧИТЬ сервер.

Все учел?

Den73:
где вы это вычитали?

http://wiki.hetzner.de/index.php/Failover/ru

Афтепати бомбезный

jpg 20160317_223355.jpg
Sijaw:
на них порог блокировки при атаке выше

а какой порог блокировки на выделенном сервере?

netwind:
Хорошо, что вам удалось подергать за ручки и что-то изменилось. Но это как-то неосознанно происходит.

Все верно. Причем я не уверен, что эти опции не вылезут где-то другим боком.

netwind:
Поэтому, я бы все-таки начал с ionice и rsync --bwlimit чтобы неприоритетные задачи сделать незаметными

Вы имеете ввиду всем задачам, выполняемым по крону, поставить ionice -с3 или другое?

rsync --bwlimit - "ограничивает пропускную способность в КБ/c"

У меня пока не машине нет бакапов. Или где-то еще используется?

Еще, я так понимаю, может подвисать и из-за зеркального рейда.

atop - нагрузка "только запись логов":

  PID      RDDSK          WRDSK      WCANCL           DSK        CMD       
1473 12K 78184K 0K 18% flush-9:2
28907 80K 66728K 0K 16% nginx
28908 44K 66572K 0K 16% nginx
28905 140K 65696K 0K 16% nginx
28906 236K 65560K 0K 16% nginx
473 0K 51396K 0K 12% jbd2/md2-8



---------- Добавлено 14.03.2016 в 17:13 ----------

Погуглил - проблема не только у мнея. Судя по всему блокирование nginx из-за бага в ядре 12309: bugzilla.kernel.org/show_bug.cgi?id=12309

Победил следующим путем.

Было:

# cat /proc/sys/vm/swappiness
10
# cat /proc/sys/vm/dirty_ratio
40
# cat /proc/sys/vm/dirty_background_ratio
2
# cat /proc/sys/vm/vfs_cache_pressure
1000
# cat /sys/block/sda/queue/nr_requests
128
# cat /sys/block/sdb/queue/nr_requests
128
# sysctl vm.vfs_cache_pressure
vm.vfs_cache_pressure = 1000
# cat /proc/sys/vm/swappiness
10

При:

# echo 4096 > /sys/block/sda/queue/nr_requests
# echo 4096 > /sys/block/sdb/queue/nr_requests
# echo 99 > /proc/sys/vm/dirty_ratio
# sysctl vm.vfs_cache_pressure=10
# sysctl vm.swappiness=100

Особо ничего не изменилось.

dd if=/dev/zero of=/gbfile bs=1M count=6000&

лог доступности сайта, ms:

[2016-03-14 19:26:27] 179: 0 0 44 44 89 
[2016-03-14 19:26:40] 10192: 0 0 40 8040 89 (таймаут)
[2016-03-14 19:26:49] 7192: 0 0 7057 44 89
[2016-03-14 19:26:53] 178: 0 0 44 44 89

Оставил и добавил:

sysctl vm.dirty_background_ratio=0
sysctl vm.dirty_ratio=0

Это помогло. Файл стал создаваться существенно дольше:

9437184000 bytes (9.4 GB) copied, 68.1214 s, 139 MB/s

Но, система почти не подвисает.

при проверке доступности сайта каждые 2 секунды:

dd if=/dev/zero of=/gbfile bs=1M count=6000& -- вообще без тормозов

dd if=/dev/zero of=/gbfile bs=1M count=9000& -- одна проверка с задержкой 1.267s

dd if=/dev/zero of=/gbfile bs=1M count=15000& -- одна проверка с задержкой 3.366s

[2016-03-14 19:41:56] 178: 0 0 44 44 88
[2016-03-14 19:42:02] 3366: 0 0 43 3233 88
[2016-03-14 19:42:04] 180: 0 0 45 44 89


---------- Добавлено 14.03.2016 в 17:27 ----------

Только во время создания 15Гбайт файла вырос disk latency до 4 сек (до этого он был максимум 0.1)

Огромное спасибо за советы.

Еще обнаружил проблему.

При более менее активных дисковых операциях, начинает подвисать nginx. Мне кажется, что процесс nginx блокируется при записи лога (лог нужен).

Логи достигают до 10-15 Гбайт в сутки (отключить не могу, но могу уменьшить на 30%).

Вот так выглядит лог проверки доступности сайта (числа - миллисекунды), если запустить на сервере копирование 10ГБ файла.

[time] All time: Dns Connect Send Wait Receive

[2016-03-13 03:09:18] 179: 0 0 44 45 89

[2016-03-13 03:09:20] 189: 0 0 47 44 96

[2016-03-13 03:09:34] 7252: 0 0 43 7007 200

[2016-03-13 03:09:37] 1970: 0 0 46 1831 91

[2016-03-13 03:09:41] 179: 0 0 44 44 89

[2016-03-13 03:09:51] 7770: 0 0 44 7007 718

[2016-03-13 03:09:54] 180: 0 0 45 44 89

[2016-03-13 03:09:56] 165: 0 0 41 41 81

Тоже копирование, но с ionice -c3

[2016-03-13 03:38:03] 178: 0 0 44 44 88

[2016-03-13 03:38:05] 178: 0 0 44 44 89

[2016-03-13 03:38:15] 4199: 0 0 44 4065 89

[2016-03-13 03:38:17] 178: 0 0 44 44 88

[2016-03-13 03:38:20] 177: 0 0 44 44 88

[2016-03-13 03:38:25] 1437: 0 0 40 1315 81

[2016-03-13 03:38:28] 162: 0 0 40 40 81

Я так понимаю, задержки когда каждый процесс nginx пытается записать лог.

Логи пишутся по 64Кб: access_log ... buffer=64k;

error_log без указания buffer

Всего: 750