nginx периодически отдаёт 404 на тяжёлых скриптах
Всем привет!
В общем, nginx периодически отваливается на тяжёлых скриптах.
Т.е. есть у меня сниппет, который ресайзит одну (но большую) картинку. И раз-через-раз страница открывается с 404 ошибкой. При чём я бы понял, если бы дело было в таймаутах, но тут ведь как — nginx может через 2 секунды отдать 404, а может думать секунд 10 и потом спокойно открыть страничку с отресайзенной картинкой. Магия.
Может быть дело в памяти? Только вот что конкретно регулировать? Может кто подскажет?
p.s. код ресайза (здесь всё стандартно, через phpThumb, и особо смысла в себе не несёт, но на всякий случай):
p.p.s. проблема именно в этом месте, а не в других сниппетах 100%.
p.p.p.s. гугление ничего толком не дало.
В общем, nginx периодически отваливается на тяжёлых скриптах.
Т.е. есть у меня сниппет, который ресайзит одну (но большую) картинку. И раз-через-раз страница открывается с 404 ошибкой. При чём я бы понял, если бы дело было в таймаутах, но тут ведь как — nginx может через 2 секунды отдать 404, а может думать секунд 10 и потом спокойно открыть страничку с отресайзенной картинкой. Магия.
Может быть дело в памяти? Только вот что конкретно регулировать? Может кто подскажет?
p.s. код ресайза (здесь всё стандартно, через phpThumb, и особо смысла в себе не несёт, но на всякий случай):
function phpThumbRender ($source, $dest, $options = array()) {
$this->phpThumb->setSourceFilename($source);
foreach ($options as $k => $v) {
$this->phpThumb->setParameter($k, $v);
}
if ($this->phpThumb->GenerateThumbnail()) {
if ($this->phpThumb->RenderToFile($dest)) {
return $dest;
} else {
// $modx->log(...);
return false;
}
} else {
// $modx->log(...);
return false;
}
// $modx->log(...);
return false;
}p.p.s. проблема именно в этом месте, а не в других сниппетах 100%.
p.p.p.s. гугление ничего толком не дало.
Комментарии: 8
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
У тебя, случаем, скрипт потом не редиректит юзера прям на картинку, которую не смог сделать?
Редиректа на картинку нет. Выводится через
Картинка не очень-то и большая — 2000x2000px. А когда буду в цикле гонять штук по 10-20 — то вообще ничего работать не будет.
Справедливости ради, картинка не только ресайзится — к ней накладывается тень через imagemagick. Но всё-равно — падает-то через раз и с разными (и нелогичными) таймаутами.
Ну а дальше только пытаться понять, почему он падает по-разному. Пиши лог ошибок и замеряй время, авось чего и увидишь.
С хостингом всё в порядке?
Нагрузка на процессор 0-3%, свободной памяти 60МБ.
Когда обновляю страницу со сниппетом, то
Нагрузка на процессор — 100%, память отжирается вся. В этот момент и отдаёт 502.
В те моменты, когда памяти хватает, то страница загружается.
Печаль-беда. Не думал я, что отресайзить и наложить тенюшку — это такая жесть в плане производительности.
Блин, у меня последняя надежда — может это потому, что наложение тени (на уже уменьшенную картинку) через imagemagick я запускаю через exec? да-да, exec не отключен
Может имеет смысл поставить php-библиотеку и тогда всё будет хорошо?
Иначе это вообще какая-то жесть получается.
Я помню, ты давно писал, в каком-то плагине для ресайза ты использовал не phpThumb с GD, а именно imagemagick. У тебя же всё хорошо с ним было? Я чёт найти ту заметку не могу.
modx.pro/howto/3444-the-imposition-of-the-watermark-in-ms2gallery/
modx.pro/development/619-working-with-phpthumb/
Но блин. Пора мне с моим везением что-то делать.
Я от phpThumbs'а ничего, кроме ресайза, добиться не могу. Т.е. вообще!
Простой кофиг:
А ничего, кроме ресайза не применяется. Png'шным файл не становится; какой бы радиус размытия не устанавливал — всё одинаково; тени нет вообще.
Я уж как только не пробовал комментировать эти параметры — вообще без результатно, только ресайз работает.
Ладно, думаю, верну всё как было, мало ли. Удалил php5-imagick, чтобы через gd работало и… ничего не изменилось. Т.е. как был ресайз, так он и остался — единственным работающим.
Вроде уж 2.2.15 стоит, казалось бы, ан нет. Я уж и не знаю( Надо руковыпрямитель на алиэкспрессе посмотреть, вдруг продают.
upd. php5-fpm перезапускал