Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Разное

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Не хватает памяти у хостинга
 
 автор: Владимир55   (15.12.2007 в 11:41)   письмо автору
 
 

Седьмого ноября я получил неожиданный подарок: владелец VDS удвоил выделенные мне ресурсы! Все: и размер дискового пространства, и производительность процессора, и объем оперативной памяти. Мне оставалось только порадоваться, хотя и прежние объемы мне не были узки: диск использовался на 30%, а загрузка процессора находилась где-то в районе нуля и еще ни разу не превысила 0.15% выделенной мощности.

Каково же было мое удивление, когда вчера посыпались автоматические сообщения типа:
"From: "Cron Daemon" Cannot fork: Cannot allocate memory"
"From: "Charlie Root" No output from the 7 files processed".

Техподдержка в ответ на мой запрос заявила, что это указывает на недостаток памяти - оперативной+виртуальной. И что какой-то из скриптов поедает ее слишком много.

Такое вполне возможно, ибо скриптов рнр я наплодил немало. Правда, все они стоят на экспериментальной малопосещаемой части сайта, куда приходит менее 100 человек в день. Да и загрузка процессора ничтожна, так что ничто не мешает ему увеличить размер файла подкачки на сколько надо.

Сейчас система имеет такие ресурсы:
Процессор Virtual CPU 186 MHZ X 2;
Загрузка 0.09 %;
Оперативная память - 96 Мб;
Файл подкачки - 191 Мб;
Трафик примерно 1 Гб в день.

При этом в файле настройки /etc/my.cnf мною еще летом сделаны такие изменения:
key_buffer = 16М
open-files-limit=500

Что посоветуете для решения проблемы?

   
 
 автор: Владимир55   (16.12.2007 в 18:32)   письмо автору
 
   для: Владимир55   (15.12.2007 в 11:41)
 

Мониторинг, проведенный техподдержкой, показал, что своп постоянно занят на 90%, а загрузка процессора ничтожна.

Что бы это могло значить?

   
 
 автор: cheops   (16.12.2007 в 18:58)   письмо автору
 
   для: Владимир55   (16.12.2007 в 18:32)
 

Тоже самое - не хватает памяти, страницы сбрасываются на swap система ждёт, когда они от туда будут извлечены и процессор почти не используется - так как узким местом является потребление памяти.

   
 
 автор: Владимир55   (16.12.2007 в 19:16)   письмо автору
 
   для: cheops   (16.12.2007 в 18:58)
 

Как я понимаю, работоспособность от этого не снижается и сбои не возникают. А просто замедляется открытие страниц. Если я подключу еще больше скриптов или увеличится посещаемость, то система соразмерно увеличит размер swap и будет работать еще медленнее, но ее работоспособность все равно сохранится.

Так?

   
 
 автор: glsv (Дизайнер)   (17.12.2007 в 06:04)   письмо автору
 
   для: Владимир55   (16.12.2007 в 19:16)
 

>Как я понимаю, работоспособность от этого не снижается и сбои не возникают.
Работоспособность снижается катастрофически. Самое плохое, что может случиться с сервером, исключая его "падение", - это уход в swap. Система работать будет, но для посетителей время отклика может стать так велико, что для них сервер будет мертв.

>Если я подключу еще больше скриптов
Собственно, кол-во скриптов тут ни при чем. Нужно смотреть кто "сжирает память". Это могут быть и скрипты, но проблема никак не в количестве, а в качестве. Довольно много памяти потребляется и MySQL.

   
 
 автор: glsv (Дизайнер)   (17.12.2007 в 06:08)   письмо автору
 
   для: Владимир55   (15.12.2007 в 11:41)
 

>куда приходит менее 100 человек в день.
Не показатель. Даже один вызов некорректного скрипта может отправить сервера в swap. Это, конечно, редкая ситуация и зачатую возникает из-за багофич PHP/Apache, но тем не менее...

   
 
 автор: Владимир55   (17.12.2007 в 15:45)   письмо автору
 
   для: glsv (Дизайнер)   (17.12.2007 в 06:08)
 

Как показали измерения, реально у меня съедается 655 Мбайт оперативной памяти (RAM+swap).
Означает ли это, что мне нужен тариф, включающий в себя RAM порядка 700 Мбайт?
Это же огромная цифра, которую далеко не все VDS обеспечивают!

   
 
 автор: glsv (Дизайнер)   (17.12.2007 в 23:00)   письмо автору
 
   для: Владимир55   (17.12.2007 в 15:45)
 

>Как показали измерения, реально у меня съедается 655 Мбайт оперативной памяти (RAM+swap).
Не совсем так. Оперативной памяти у Вас всего 64 Мб - остальное swap.

>Означает ли это, что мне нужен тариф, включающий в себя RAM порядка 700 Мбайт?
Наверняка нет. swap - это не та память, которую Вы реально используете, типа файла подкачки в Windows. Swap - это объем памяти в какой-то момент, сброшенной на специальный раздел диска.
На какой-то момент был дефицит памяти и система сбросила, редко неиспользуемую память, как она посчитала, на диск. Так она там и осталась. Swap - не очищается автоматически как только пропадает дефицит памяти. Управление Swap значительно сложнее. Система может иметь Гиг абсолютно свободной оперативки, но swap так и не будет очищен до конца - просто потому что система в этом не нуждается (ну лежит там 200-300 Мб ненужного "мусора" - ничего страшного с точки зрения системы).

Нужно смотреть в комплексе. Сколько памяти занимают процессы, сколько свободной, сколько в "файловом" кеше, сколько на буфера. Вполне возможно, что память, действительно, постоянно сбрасывается в swap. Только определить потребность памяти по размеру swap нельзя.

   
 
 автор: glsv (Дизайнер)   (17.12.2007 в 23:19)   письмо автору
 
   для: glsv (Дизайнер)   (17.12.2007 в 23:00)
 

>Только определить потребность памяти по размеру swap нельзя.

Можно определить по потребностям Apache + MySQL. У Вас ведь больше ничего нет?

   
 
 автор: а-я   (17.12.2007 в 17:44)   письмо автору
 
   для: Владимир55   (15.12.2007 в 11:41)
 

ачуметь... почти ничего не понял... можете посоветовать литературу, где об этом можно почитать?

и как вы вообще измеряете оперативную память? нагрузку? и т.д.

   
 
 автор: Владимир55   (17.12.2007 в 19:33)   письмо автору
 
   для: а-я   (17.12.2007 в 17:44)
 

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

Там же и нагрузка на процессор по каждому текущему процессу.

   
 
 автор: glsv (Дизайнер)   (17.12.2007 в 23:03)   письмо автору
 
   для: Владимир55   (17.12.2007 в 19:33)
 

>Исходные данные беру в Панели управления.
Т.е. у Вас есть только веб-интерфейс? Хорошо бы видеть реальный вывод системных команд: top, free и т.п.

   
 
 автор: Владимир55   (17.12.2007 в 23:08)   письмо автору
 
   для: glsv (Дизайнер)   (17.12.2007 в 23:03)
 

У меня только панель ISP VDS manager. А top, free - это, неверное, выше.

   
 
 автор: glsv (Дизайнер)   (17.12.2007 в 23:17)   письмо автору
 
   для: Владимир55   (17.12.2007 в 23:08)
 

Чтобы понять что происходит выводы этих команд нужно мониторить в течении периода времени.
Как я понял, Apache-статус у Вас есть.
Какое кол-во запросов он обслуживает одновременно? И сколько процессов при этом запущено.
Т.е. какое сколько реально работают, а сколько простаивают занимая память?

   
 
 автор: glsv (Дизайнер)   (17.12.2007 в 23:12)   письмо автору
 
   для: Владимир55   (15.12.2007 в 11:41)
 

А скольк памяти потребляет MySQL? Этот товарищ тоже прожорив.

Сколько памяти он может потребить можно расчитать по формуле

Used MySQL memory = key_buffer + max_connections * (join_buffer + record_buffer + 
sort_buffer + thread_stack + tmp_table_size)

key_buffer известен, а вот сколько у Вас разрешено max_connections и размеры буферов.

   
 
 автор: Владимир55   (17.12.2007 в 23:22)   письмо автору
 
   для: glsv (Дизайнер)   (17.12.2007 в 23:12)
 

Базы у меня практически отсутствуют. Разве только счетчик, но сейчас и он обнулен. В панели есть название процесса mysqld, и этот процесс занимает 5,54 Мб.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования