- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Тренды маркетинга в 2024 году: мобильные продажи, углубленная аналитика и ИИ
Экспертная оценка Адмитад
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Сервер падает, выдает ошибку 500, в логах сервера
Cannot allocate memory: couldn't create child process
судя по всему не хватает оперативной памяти )
логически могу предположить что на сайт заходят пользователи и активно загружают изображения, после чего происходит казус.
изображения обрабатываются при загрузке и хранятся на сервере.
Подскажите решение проблемы,
- можно ли просчитать максимально возможное количество одновременно обрабатываемых изображений
- можно ли как-либо ограничить количество одновременно загружаемых фотографий во время выполнения скрипта или поставить в очередь на обработку?
- другие варианты решения ?
логически могу предположить что на сайт заходят пользователи и активно загружают изображения, после чего происходит казус.
изображения обрабатываются при загрузке и хранятся на сервере.
1. Какой именно скрипт падает с ошибкой? Если обработчик изображений - предположение, видимо, верное. Дело, скорее всего, не в количестве одновременно обрабатываемых изображений, а в объёме памяти, необходимой для обработки одного большого изображения (попробуйте загрузить ночью/утром - когда посещаемость невелика большую фотографию)
2. Увеличить лимит памяти в .htaccess Примерно так (проверить, сработало ли можно, функцией ini_get или ini_get_all.. или phpinfo()):
3. очередь обработки, конечно, можно реализовать.. но если у скрипта не будет хватать памяти на обработку одного изображения - не поможет.
p.s. речь про shared хостинг, или выделенный/виртуальный сервер?
1. Текст ошибки следующий:
Cannot allocate memory: couldn't create child process: 12: php
Cannot allocate memory: couldn't spawn child process: /var/www/yuser/data/php-bin/php
и конкретно по страницам (чаще главная, но и внутренние попадаются):
Cannot allocate memory: couldn't create child process: 12: php, referer: http://xxx.com/page/name
Cannot allocate memory: couldn't spawn child process: /var/www/yuser/data/php-bin/php, referer: http://xxx.com/page/name
т.е. не конкретно обработчик изображений а сами страницы. Я предположил что память занята была обработчиком, после чего стали выпадать страницы.
2. Значение memory_limit ограничивает на один процесс или на все запущенные? Как подойти к подсчету - к примеру 2 одновременно загружаемых изображения займут по 250мб., а одно 500 или лучше разбить на 10 по 50? и вот к примеру поставил ограничение 50 Мб, а при обработке изображения оказалось что требуется больше - в таком случае просто не обработается картинка или весь сервер ляжет? и как просчитать сколько необходимо памяти на одно изображение?
Также хотелось бы учесть что пользователи ресурса не входят в категорию продвинутых пользователй и скорее загружают фотографии на ресур прямо с фотоаппарата, расширение которых обычно превышает 2500*2000
сейчас это выделеyный сервер с оперативной памятью 1Гб. регулярно в субботу вечером ложится из-за того что пользователи начинают грузить фотографии.