Rails + Passenger - понимание увеличения памяти при повторных запросах - PullRequest
0 голосов
/ 07 сентября 2018

Я наблюдаю увеличение объема памяти с 137 МБ до 323 МБ, повторяя тот же запрос с Rails. Я хотел бы понять механику этого.

Что касается моей конфигурации nginx-passenger, я установил минимум 2 экземпляра в моем файле vhost и максимальное количество экземпляров 5

Вот несколько воспроизводимых шагов, которые я делаю

  • Я перезапускаю свое приложение с помощью passenger-config restart-app
  • Во время перезапуска приложения на сервере выполняется несколько проверок работоспособности, поэтому Passenger запустит 2-3 экземпляра с указанным объемом памяти. Не то чтобы на данный момент выполнялись только запросы API (без рендеринга html-представления, точнее, только json или json: api). На данный момент я вижу с passenger-status:

.

/websites/example/current/public (production):
  App root: /websites/example/current
  Requests in queue: 0
  * PID: 6801    Sessions: 0       Processed: 3       Uptime: 17s
    CPU: 1%      Memory  : 121M    Last used: 9s ago
  * PID: 6808    Sessions: 0       Processed: 1       Uptime: 16s
    CPU: 1%      Memory  : 100M    Last used: 10s ago
  * PID: 6836    Sessions: 0       Processed: 0       Uptime: 9s
    CPU: 0%      Memory  : 64M     Last used: 9s ago

Теперь давайте предположим, что я запустил curl на localhost вручную, который отобразит некоторую страницу из шаблона .html.erb curl http://localhost:3000/

  Requests in queue: 0
  * PID: 6801    Sessions: 0       Processed: 20      Uptime: 1m 40s
    CPU: 2%      Memory  : 232M    Last used: 2s ago
  * PID: 6808    Sessions: 0       Processed: 1       Uptime: 1m 39s
    CPU: 0%      Memory  : 100M    Last used: 1m 33s ago
  * PID: 6836    Sessions: 0       Processed: 0       Uptime: 1m 32s
    CPU: 0%      Memory  : 66M     Last used: 1m 32s ago

Память подскочила до 230 МБ. Я понимаю, что это может быть связано с конвейеризацией ресурсов и, возможно, кэшированием некоторых фрагментов представления. Я предполагаю, что это несколько ожидаемо.

Теперь, что мне трудно понять: допустим, я продолжаю рассылать спам по своему curl http://localhost:3000/ (третье приложение исчезло из-за нехватки запросов на parralel, нормально)

Requests in queue: 0
  * PID: 6801    Sessions: 0       Processed: 168      Uptime: 3m 40s
    CPU: 2%      Memory  : 332M    Last used: 2s ago
  * PID: 6808    Sessions: 0       Processed: 3       Uptime: 3m 39s
    CPU: 0%      Memory  : 101M    Last used: 1m 33s ago

Таким образом, произошло увеличение с 230 МБ до 330 МБ (и с этого момента оно перестает увеличиваться даже после того, как спам больше запросов на тот же URL). Кто-нибудь может иметь некоторое представление о том, что за сделка связана с этим увеличением?

РЕДАКТИРОВАТЬ:

Я еще раз попробовал перезапустить приложение конфигурации пассажиров и спам-запросы, теперь отпечатки памяти приложения перестают расти на 242 МБ ... не совсем уверен, что произойдет. Я попытался очистить папку shared / tmp / cache (я использую локальную FS в качестве хранилища кеша), но, похоже, оттуда она не поступила.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...