Linux Labs

Система изнутри: ресурсы, ядро, процессы / Итоговая лаба

Медленный сервер: разбор трёх жалоб

сложная ~45 мин
Не запущена Запускается обычно ~20 с
Сообщить о проблеме

Ситуация

На этом сервере работает сайт каталога интернет-магазина — служба lab-catalog, порт 8080. С утра на сервер пришли три жалобы, у каждой — свой ключ:

  • slow — главная http://localhost:8080/ открывается по полсекунды, хотя обычно ей хватает сотых долей секунды. Время ответа: curl -s -o /dev/null -w '%{time_total}\n' http://localhost:8080/.
  • memory — мониторинг пишет, что доступной памяти на сервере с каждой минутой меньше, хотя посетителей не прибавилось.
  • errors — когда посетителей много, запросы к карточкам товаров /api/item/<номер> заканчиваются ошибкой 500. Наплыв из 200 одновременных запросов:

bash curl -s -Z --parallel-max 200 --parallel-immediate -o /dev/null -w '%{http_code}\n' 'http://localhost:8080/api/item/[1-200]' | sort | uniq -c

Разработчики займутся своим кодом позже. От тебя — найти на машине, что вызывает каждую жалобу, и устранить причину настройками системы и служб. Программы в /usr/local/bin не меняй. sudo работает без пароля.

Задача

  1. slow: главная отвечает быстрее чем за 0,25 с — и после перезагрузки сервера.
  2. memory: процесс, который съедает память, продолжает работать, но не может занять больше 128 МиБ, а дорастая до предела, поднимается сам — и после перезагрузки.
  3. errors: все 200 запросов из команды выше получают код 200 — и после перезапуска службы и перезагрузки.
  4. Отчёт ~/triage.txt — по строке на жалобу: ключ, PID процесса-виновника и причина своими словами.

slow: <PID> <причина> memory: <PID> <причина> errors: <PID> <причина>

PID — тот, что ты нашёл при разборе. После перезапуска у процесса новый PID; подойдёт и прежний.

Видна только тебе. Сохраняется при вводе.

Все заметки

Цели лабы

0 из 4
  • slow: главная http://localhost:8080/ отвечает быстрее 0,25 с — и после перезагрузки — ещё не проверялась
  • memory: процесс, который съедал память, работает в пределе 128 МиБ и поднимается сам — и после перезагрузки — ещё не проверялась
  • errors: все 200 одновременных запросов к /api/item/… получают код 200 — и после перезапуска службы и перезагрузки — ещё не проверялась
  • В ~/triage.txt по каждой жалобе — PID процесса-виновника и причина — ещё не проверялась

Подсказки

открыто 0 из 3 · открываются по одной
Подсказка 1
Показать решение после 3 неудачных проверок

Выйти из лабы?

Машина проработает ещё 10 минут и удалится. Файлы пропадут, выполненные цели останутся.

Загрузка…