Apache яде много RAM. Kaк да се ограничи?

D.Ivanov

Well-Known Member
Apache-то на един от VPS - ите ми изглежда си взема прекалено много РАМ. Как може това да се ограничат процесите от конфигурационният файл, за да спре това нещо?

Моля ви се помогнете ми :)
 
От: Apache яде много RAM. Kaк да се ограничи?

Можеш да намалиш броя на инстанциите му ето в тази секция на конфиг файла:

<IfModule prefork.c>
StartServers ...
MinSpareServers ...
MaxSpareServers ...
ServerLimit ...
MaxClients ...
MaxRequestsPerChild ...
</IfModule>
 
От: Apache яде много RAM. Kaк да се ограничи?

Pastebin си конфигурационните файлове, какъв трафик имаш и ще можем да ти помогнем. Иначе трябва да говорим наизуст.

Можеш да намалиш броя на инстанциите му ето в тази секция на конфиг файла:

<IfModule prefork.c>
StartServers ...
MinSpareServers ...
MaxSpareServers ...
ServerLimit ...
MaxClients ...
MaxRequestsPerChild ...
</IfModule>

Ако е конфигуриран като prefork, да.

Като цяло моето предложение е да замениш Apache. Аз съм фен на Nginx - 20 000 iddle процеса - 4мб рам :)
 
От: Apache яде много RAM. Kaк да се ограничи?

Благодаря ви за бързите отговори. Трафика въобще не го взимам под внимание, защото имам на този ВПС само 3 сайта, които имат по около 500 посещения дневно.1024 е РАМ на плана ми и още толкова vswap.
И аз мисля да заменя Апачето с nginx, но понеже сега ползвам един панел безплатен zPanel и затова съм на Апаче.Ще го направя за вбъдеще със сигурност.

А относно ограничаването на стартиращите сървъри и другите неща ще съм благодарен , ако ми покажете някакви препоръчителни стойности като се има впредвид, че натоварването ще е около 30 сайта с по около 1000 посещения на ден.

А относно prefork, рових се из нета и гледам, че някои съветват за mpm worker.
 
От: Apache яде много RAM. Kaк да се ограничи?

Благодаря ви за бързите отговори. Трафика въобще не го взимам под внимание, защото имам на този ВПС само 3 сайта, които имат по около 500 посещения дневно.1024 е РАМ на плана ми и още толкова vswap.
И аз мисля да заменя Апачето с nginx, но понеже сега ползвам един панел безплатен zPanel и затова съм на Апаче.Ще го направя за вбъдеще със сигурност.

А относно ограничаването на стартиращите сървъри и другите неща ще съм благодарен , ако ми покажете някакви препоръчителни стойности като се има впредвид, че натоварването ще е около 30 сайта с по около 1000 посещения на ден.

А относно prefork, рових се из нета и гледам, че някои съветват за mpm worker.

Пусни си тук конфигурационните файлове :wink:

zPanel нямат модул за Nginx все още, аз съм го тествал доста обстойно.

Дали да използваш mpm или prefork зависи от много неща. mpm предлага по-добър контрол и по-малко използвани ресурси, но си има своите недостатъци. Ето примери с mpm и prefork.

<IfModule worker.c>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>

<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000
</IfModule>

Ако мислиш да хостваш 30 сайта на 1024 рам, по-добре зарежи Apache и zPanel от сега, ще си спестиш главоболия.
 
Не апачето, а допълнителните модули заредени към него увеличават пометта му.

r.stefanov ти пак си смяташ по твоя си начин - както ти е изгодно. Защо не включиш в сметката и паметта, заета от php процесите?

D.Ivanov, каквото и да правиш имай предвид, че и при уеб сървърите е като колите - за да вървят трябва да горят или за да обработват голям обем потребители им трябват процесор и памет. Пропуснал си да кажеш основни неща:
1. Колко е прекалено много памет?
2. Колко едновременни потребителя имаш?
3. С колко/какви процесора разполагаш?

Без тези данни всякакви вятърничави съвети от сорта на "сменяй колата и бягай" са безпочвени.
 
От: Re: Apache яде много RAM. Kaк да се ограничи?

r.stefanov ти пак си смяташ по твоя си начин - както ти е изгодно. Защо не включиш в сметката и паметта, заета от php процесите?

Не ми е по-изгодно, отнело ми е много време да разбера някои неща и куп тестове. Ако смени web сървъра ще изкара 50 пъти повече производителност (буквално) от същия VPS. Колкото и да режеш Apache той си е memory hog (не ми идва на български думата). Всеки малко или много престрашил се да го замени знае, че е така и изобщо не зависи от това колко модула си заредил. Резултатите накрая ще са същите (с някакви минимални проценти подобрение ако "оптимизираш" Апача).

П.П. - да пусне конфигурационните файлове и ще му кажем какво да направи.

П.П.2 - 30 сайта с по 1000 посещения на ден сметнато грубо с requests които се очакват от всеки сайт. А сега симулирай тези посещения/trafik с AB, Siege или Tsung. Директно можеш да прецениш какво ще стане и сам да си правиш сметката дали да използваш MPM, prefork, Nginx или друго решение. По-добре от сега от колкото по-късно с реалния трафик на лице.

П.П.3 - ето ти и една съвсем малко демонстрация (не са в local) няма и кеширане пуснато:

ab -kc 100 -n 100000 към index.php с phpinfo

Concurrency Level: 100
Time taken for tests: 26.932 seconds
Complete requests: 100000
Failed requests: 0
Write errors: 0
Keep-Alive requests: 100000
Total transferred: 34264694 bytes
HTML transferred: 1200000 bytes
Requests per second: 3712.99 [#/sec] (mean)
Time per request: 26.932 [ms] (mean)
Time per request: 0.269 [ms] (mean, across all concurrent requests)
Transfer rate: 1242.43 [Kbytes/sec] received
 
Последно редактирано:
От: Re: Apache яде много RAM. Kaк да се ограничи?

Не апачето, а допълнителните модули заредени към него увеличават пометта му.

r.stefanov ти пак си смяташ по твоя си начин - както ти е изгодно. Защо не включиш в сметката и паметта, заета от php процесите?

D.Ivanov, каквото и да правиш имай предвид, че и при уеб сървърите е като колите - за да вървят трябва да горят или за да обработват голям обем потребители им трябват процесор и памет. Пропуснал си да кажеш основни неща:
1. Колко е прекалено много памет?
2. Колко едновременни потребителя имаш?
3. С колко/какви процесора разполагаш?

Без тези данни всякакви вятърничави съвети от сорта на "сменяй колата и бягай" са безпочвени.

VPS-а ми е OpenVS:

1024MB RAM
1024MB VSwap
4 CPU Cores @ 3.3GHz+
30GB SSD space
1Gbps Port
3000GB Bandwidth
1 IPv4 Address (+1 FREE)
16 IPv6 Addresses
Weekly Remote Backups
TUN/TAP

Ето малко детайли за това колко РАМ ползва с 3 сайта:

[root@s2 etc]# free -m
total used free shared buffers cached
Mem: 1024 402 621 0 0 59
-/+ buffers/cache: 342 681
Swap: 1024 0 1024
[root@s2 etc]# top
top - 16:00:00 up 11 min, 1 user, load average: 0.04, 0.01, 0.00
Tasks: 44 total, 1 running, 43 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1048576k total, 412080k used, 636496k free, 0k buffers
Swap: 1048576k total, 0k used, 1048576k free, 61412k cached
 
От: Apache яде много RAM. Kaк да се ограничи?

Ето ти един скрипт, с който можеш да проверяваш при всяка конфигурация колко рам ще ти използва Apache: https://code.google.com/p/check-httpd-limits/

Пробвай различни настройки (mpm, event, prefork), поиграй си с конфовете и сам прецени според нуждите ти.

Опитай с mod_php FastCGI и php-fpm с php-fpm ще имаш най-добри резултати, но няма да ти е лесно да го конфигурираш.
 
От: Apache яде много RAM. Kaк да се ограничи?

Спри си модулите които не ползваш и сложи някакъв кеш за пхп-то , като АПС например..

Не го подвеждай. Точно слагането на кеш ще повиши разхода на ram. А как точно установи, че проблема е в броя процеси на апаче?
 
От: Apache яде много RAM. Kaк да се ограничи?

Благодаря за съветите, ще изпробвам нещата споменати тук и каквото мога да направя самостоятелно. Напълно нов съм в тази сфера и ми е малко трудно отначало, надявам се след няколко месеца да съм по-запознат вече и да действам без панели като цяло.

Засега обаче ми хрумва и за cPanel.Чудя се, ако го инсталирам дали ще вържа нещата като цяло да мога да работя нормално. Знам, че трябват 512 РАМ за cpanel и точно това сякаш ме спира да го инсталирам. Аз се преместих на ВПС от Хостгатор(бях на shared) и преди да се преместя попитах колко РАМ ползват сайтовете ми(около 35 сайта действащи всичките на wordpress) и от съпорта им казаха, че ползвали около 50-70 МБ, което незнам възможно ли е според вас? :) Ако е така няма да има проблеми да го инстална и да си реша проблема засега. Сайтовете всичките са wordpress, повечето с embed видеа и с около 500-1000 посещения дневно.
 
От: Apache яде много RAM. Kaк да се ограничи?

Не го подвеждай. Точно слагането на кеш ще повиши разхода на ram. А как точно установи, че проблема е в броя процеси на апаче?

Ами говоря от личен опит.. преди време се борех и аз с подобен проблем ..
Какво направих : изключих си модулите на апаче които не ползвам и сложих АПЦ кеш за пхп-то , намалих си и броя на spawn процесите
разликата ?
 

Прикачени файлове

  • rtm_588897113529.png
    rtm_588897113529.png
    19.2 KB · Преглеждания: 1
От: Apache яде много RAM. Kaк да се ограничи?

Едва ли 70мб, по принцип самите разработчици на Wordpress препоръчват поне 128 или 256 memory лимит за php. 256 след 3.5.0

Това е статистика от сайт горе-долу с тези посещения:

Untitled2.png

Само че има пуснат full page cache.

@vladinc той няма проблем с CPU, а с рам. Къде ще пази тази кеш? :wink:
 
От: Apache яде много RAM. Kaк да се ограничи?

А, да, извинвай, не обърнах внимание, на много кафета съм :D

Ама си намалил и spawn-a.

Преди да опита и да се върне с резултати само си чоплим по клавиатурите :)
 
От: От: Apache яде много RAM. Kaк да се ограничи?

Едва ли 70мб, по принцип самите разработчици на Wordpress препоръчват поне 128 или 256 memory лимит за php. 256 след 3.5.0

Това е статистика от сайт горе-долу с тези посещения:

Виж файлът 6396

Само че има пуснат full page cache.

@vladinc той няма проблем с CPU, а с рам. Къде ще пази тази кеш? :wink:

Тази статистика е за 1 сайт, който ползва над 200 МБ РАМ?
 
Ще помоля колегите да не дават дефолтните си напътствия без да са наясно какъв е проблема - слагане/махане/промяна на какво ли не, а дори не е ясно дали има проблем....Обикновено насоки без яснота са само мечешки услуги и нещата стават по-зле.


D.Ivanov, защо мислиш, че сървъра/сайта ти използва прекалено много RAM? От пусната информация не виждам нищо фрапиращо или обезпокояващо ;)
Имаш 1GB рам, а използваш едва 40%.
 
Последно редактирано:

Горе