Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Mam pytanie - czy mozna w jakis sposob ustawic przydzial procka dla serwera apache a nawet dla konkretnej witryny hostowanej na danej maszynie?
Chodzi mi o taka sytuacje, w ktorej np na stronie A wlaczany jest skrypt - ktory dlugo sie wykonuje. Oczywiscie w tym momencie przy obecnej konfiguracji - jakakolwek inna witryna na tym hoscie jest niedostepna (po prostu strona sie nie laduje) Apache wszystkie zasoby poswieca wczesniej uruchomionemu skryptowi. Da sie to jakos obejsc? Dajmy na to, odpalam skrypt w domenie www.a.pl - i bierze 40-50% proca, albo i 95 - jesli sytuacja pozwala, ale jednoczesnie umozliwia zaladowanie innej stronki hostowanej na tym serwerze. Mysle, ze da sie to zrobic, ale nie wiem jak :-/ Apache jest dla mnie skomplikowany (za duzo zmian z wersji na wersje)
Offline
Dajmy na to, odpalam skrypt w domenie www.a.pl[/quote]
Ale onii mają na IIS a nie na apache :)Kod:
Server: Microsoft-HTTPAPI/2.0 Date: Sat, 02 Jul 2011 17:57:39 GMT Connection: close Content-Length: 326Tak na poważnie to chyba masz źle napisany skrypt jak zajmuje ci tak demona apache. Z tego co wiem apache na starcie ma limity dla każdego wątku. Chyba jakoś tak
Poszukaj w dokumentacji apache bo na pewno jest jakas opcja. Niewyobrazam sobie świadczyć hosting i jakiś amator zapuści sckrypt który wykona iloczyn kartezjański i zablokuje cały serwer ,to bez przerwy były by jakies pady.
Może inaczej co robi ten skrypt że takie są objawy Apache?
Popatrz na opcję RLimitCPU, RLimiMEMOstatnio edytowany przez hello_world (2011-07-02 20:19:03)
Offline
Hostingu nie mam, ale mam strone, do ktorej maja dostep klienci. Co do zajetosci skryptu - zapewne daloby sie go zoptymalizowac, ale mysle ze juz niewiele - skrypt generuje ok 400 plikow pdf z fakturami i wysyla je mailem, jak dlugo sie bedzie wykonywal - generalnie nie zalezy mi na tym (30 min czy 20min) byle w tym czasie byl dostep do innych stron (dokladnie dwoch)
Offline
Czy ty masz dostęp do roota?
Jeśli tak to czy obserwujesz apache podczas pracy przez http://domen.tld/server-status. To ci może dużo powiedzieć.
Może w systemie operacyjnym masz ograniczenia co do procesów lub plików.
Offline
Statyczne strony html nie wymyślą żadnego znaczącego obciążenia dla serwera i systemu.
Co do stron php, to ja radziłbym Nginx, lub Lighttpd (w nim chyba też sie to da), do tego php-fpm, i każda domena ma swojego chroota, a w nim osobny demon php-fpm.
Każdy taki proces główny możesz potraktować takimi zabawkami, jak: softlimit (pakiet daemontools), cpulimit, i ustawić limity w limits.conf.
Do tego grsecurity, żeby tych limitów trochę popilnował (w Linuxie standardowym, (o ile mi wiadomo) nie ma limitu wywołań exec,w Grsecurity jest).
A np Nginx z php-fpm jest zalediwe okolo 7 razy wydajniejszy od Apacha.
Lighttpd z php-fpm jest około 15% mniej wydajny od Nginxa.
I to chyba najsensowniejsze (moim zdaniem) rozwiązanie.
To by było na tyle
;-)
Ostatnio edytowany przez Jacekalex (2011-07-02 22:17:27)
Offline
[quote=hello_world]Czy ty masz dostęp do roota?
Jeśli tak to czy obserwujesz apache podczas pracy przez http://domen.tld/server-status. To ci może dużo powiedzieć.
Może w systemie operacyjnym masz ograniczenia co do procesów lub plików.[/quote]
Owszem mam i zobacze co mi pokaze.
Generalnie gdzies cos czytalem na temat ograniczania obciazenia dla virtualhostow... ale nic konkretnego nie znalazlem
Offline
[quote=BiExi]Kpt. - nie lepiej aby ten generator właczał się z poziomu powłoki a nie serwera apache[/quote]
Kurcze, mowisz, ze to jedyny sposob? Czyli musialbym przyjac nieco inne rozwiazania. Teraz jest tak, iz wyklikuje sobie przez strone za jaki okres ma byc cos tam generowane i wtedy nastepuje generowanie - pdfow i zaraz za tym wysylka maili. Pewnie gdyby to wywalic do execa... Pewnie bede musial sie nad tym zastanowic.
Z tego co widze - zapuscilem jeszcze raz generowanie - to nie jest zle. Teraz widze, ze chociaz top pokazuje prawie 100% proca (ramcu malo lyka), to na inne vhosty moge spokojnie sie dostac i nie widac, zeby cos zlego sie dzialo ;-) Moze za wczesniej sie martwilem.
Ostatnio edytowany przez Kpt. (2011-07-02 23:56:39)
Offline
Daj apatchowi limit. Choć nginix byłby znacznie lepszym rozwiązaniem.
A jeżeli chcesz zostać przy apatchowych zabawkach to cherokee.
http://www.howtoforge.com/how-to-limit-cpu-usage-of-a-process-with-cpulimit-debian-ubuntu
#Przykład cpulimit -P /usr/sbin/apache2 -l 30
Ostatnio edytowany przez womperm (2011-07-03 00:17:46)
Offline
Time (s) | Query |
---|---|
0.00014 | SET CHARSET latin2 |
0.00004 | SET NAMES latin2 |
0.00140 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.133.133.39' WHERE u.id=1 |
0.00067 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.133.133.39', 1732386719) |
0.00055 | SELECT * FROM punbb_online WHERE logged<1732386419 |
0.00066 | DELETE FROM punbb_online WHERE ident='3.145.105.149' |
0.00057 | SELECT topic_id FROM punbb_posts WHERE id=176745 |
0.00085 | SELECT id FROM punbb_posts WHERE topic_id=19295 ORDER BY posted |
0.00087 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=19295 AND t.moved_to IS NULL |
0.00012 | SELECT search_for, replace_with FROM punbb_censoring |
0.00080 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=19295 ORDER BY p.id LIMIT 0,25 |
0.00077 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=19295 |
Total query time: 0.00744 s |