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/.
Witajcie
Piszę tu po raz pierwszy gdyż nie mogę poradzić sobie z diagnozą problemu jakim jest zajęcie całej pamięci na moim VPS . Z 2 gb pamięci ram mój system zjadał do tejh pory lekko do 1 gb . Nagle pewnego dnia skoczyło zajęcie ramu do 2 gb. i całego prawie swapa. (500 mb). Z tego co widzę po komendzie top większość ramu trawi apache. Chciałbym mieć jakiś zapas ramu a nie wiem jak sprawdzić co powoduje te zajęcie. Może jakieś logi przejrzeć ??
[img]http://i.imgur.com/krDyF9P.jpg[/img]
z góry dziękuję za wszelką pomoc.
Offline
Optymalizacja:
-prześledzić jakie moduły są włączone i czy muszą być włączone,
-ilość sesji i to co z tym związane (ile czasu etc)
-ilość otwartych plików przez www-data/apache
jest mysql więc może zapytania mogą być mało wydajne i apache czeka na ich wykonanie. Bardzo wiele zależności.
Na szczęście są narzędzia automatyzujące - szukaj frazy "apache tuning script" (nie pamiętam czego się używało)
Offline
w przypadku apacza masz kilka razy pokazaną tą samą pamięć (ot, takie uroki fork/thread).
mod_status włączony? co pokazuje?
w logach apacza nie widać jakichś zbyt długich zapytań?
nikt nie zrobił kuku przez dziurawego wordpressa/drupala/joomlę?
Offline
2649
Ostatnio edytowany przez uzytkownikubunt (2016-12-01 01:33:08)
Offline
Zamiast Apacha radziłbym Nginxa z PHP-FPM, i do tego wszystkie procesy obciąć troszkę przez cgroup na twardo, i być może przez softlimit (pakiet daemontools) na miękko.
Ostatnio edytowany przez Jacekalex (2016-02-02 19:49:52)
Offline
owszem ja tak mam - nginx (ssl) via varnish (cache) i na końcu jakiś wordpress na apaczu (directadmin). tyle że ja mam jakiś kiloserwis...
Offline
[quote=ethanak]w przypadku apacza masz kilka razy pokazaną tą samą pamięć (ot, takie uroki fork/thread).
mod_status włączony? co pokazuje?
w logach apacza nie widać jakichś zbyt długich zapytań?
nikt nie zrobił kuku przez dziurawego wordpressa/drupala/joomlę?[/quote]
Dziękuję wszystkim za odpowiedzi . Przeglądając logi z apache error faktycznie dużo jest zapytań z wordpressa. Przeanalizuję to gdyż wcześniej było o połowę mniej ramu zużytego.
Offline
sprawdź wtyczki do wordpressa - szczególnie te od cache (potrafią naprawdę zarżnąć serwer)
Offline
A można to gdzieś w logach odczytać ?? Teraz po wyłączeniu prawie wszystkich wtyczek dalej zarzyna ram .
W logach jest między inymi taki wpis co pare sekund
[img]http://i.imgur.com/DicbLty.jpg[/img]
Ostatnio edytowany przez Gregorov (2016-02-02 23:06:39)
Offline
Używasz modułu Xmlrpc do Wordpressa?
Jeśli nie, to zablokuj dostęp do skrypta [b]/xmlrpc.php[/b] na poziomie Apache lub Nginxa (jeśli połączenie idzie przez Nginxa) - żeby zwracał odpowiedź 403 lub 404 najlepiej, natychmiast, bo to na 99.9% próba włamania do WP.
Jeśli natomiast używasz tego modułu WP, to przy dostępie do niego wsadź jakąś autoryzację na serwerze WWW, np przez htpasswd, albo lepiej przez certyfikaty SSL/PKCS#12.
[quote="Ethanak"]poza tym nginx nie zastąpi apacza (i vice versa).[/quote]
Czy byłbyś tak uprzejmy wskazać jakieś tajemnicze właściwości Apacha, dzięki którym lepiej się nadaje od Nginxa+PHP-FPM do serwowania Wordpressa?
Bo ja wiem, że Apache ma pierdylion rożnych modułów i opcji, ale jakoś
w przypadku Wordpressa nie ogarniam tej doskonałości Apacha, chyba, że ktoś nie potrafi żyć bez htacces. :D
Nginx z resztą też już ma pierdylion różnych modułów.
Ostatnio edytowany przez Jacekalex (2016-02-02 23:18:12)
Offline
zablokuj ip 185.130.5.209 na firewallu, boty odowłuja sie do xmlrpc.php a pózniej radze poszukać wtyczki która to zabezpieczy albo w pliku .htaccess
Offline
Ustaw allow dla tego pliku tylko z IP serwera i 127.0.0.1. Dla reszty: deny from all.
dla htaccess:
<Files "xmlrpc.php"> Order Allow,Deny Allow from 127.0.0.1 Allow from X.X.X.X Deny from all </Files>
Offline
[quote=woitekd]zablokuj ip 185.130.5.209 na firewallu, boty odowłuja sie do xmlrpc.php a pózniej radze poszukać wtyczki która to zabezpieczy albo w pliku .htaccess[/quote]
Przy miliionach dynamicznych adresów IP, banować po adresach?
Przyjemnej zabawy, możesz tak banować do usranej śmierci, aż w htacces albo w firewallu będziesz miał 2 mln wpisów z samego Orange. :D
Ostatnio edytowany przez Jacekalex (2016-02-02 23:21:11)
Offline
tego jednego na teraz, z htaccess nie chodzilo mi o blokowanie ip.
Offline
[quote=mati75]Ustaw allow dla tego pliku tylko z IP serwera i 127.0.0.1. Dla reszty: deny from all.
dla htaccess:
<Files "xmlrpc.php"> Order Allow,Deny Allow from 127.0.0.1 Allow from X.X.X.X Deny from all </Files>
[/quote]
Dziękuję Ci bardzo bo coś pomogło i nagle po zablokowaniu jak mówiłeś ram zużyty 300 mb :) (yupi) ... nie wiem jak mam dziękować człowiek ciągle się uczy :)
teraz wyglada tak:
[img]http://i.imgur.com/1rOuuUo.jpg[/img]
może warto zblokować ten ip ??
Ostatnio edytowany przez Gregorov (2016-02-02 23:49:24)
Offline
Przydałby się jeszcze sensowny hashlimit w firewallu.
Np tak:
iptables -I INPUT -m hashlimit -m tcp -p tcp -m multiport --dports 80,443 --hashlimit-above 20/sec --hashlimit-mode srcip --hashlimit-name http -m state --state NEW -j DROP
Sznurek:
http://tlfabian.blogspot.com/2014/06/how-does-iptables-hashlimit-module-work.html
Względnie możesz naskrobać małego demonka np w Peru czy Pythonie, który będzie czytał tego loga i wrzucał adresy do tablicy ipseta.
Tu masz conieco o użyciu ipseta:
https://forum.dug.net.pl/viewtopic.php?pid=269260
Można też jako wzór użyć skrypta httpd-guardian i modułu mod_evasive albo mod-security do Apacha.
Sznurki:
https://www.trustwave.com/Resources/SpiderLabs-Blog/Defending-WordPress-Logins-from-Brute-Force-Attacks/
http://apache-tools.cvs.sourceforge.net/viewvc/apache-tools/apache-tools/httpd-guardian?revision=1.6
Offline
[quote=Jacekalex]Używasz modułu Xmlrpc do Wordpressa?
Jeśli nie, to zablokuj dostęp do skrypta [b]/xmlrpc.php[/b] na poziomie Apache lub Nginxa (jeśli połączenie idzie przez Nginxa) - żeby zwracał odpowiedź 403 lub 404 najlepiej, natychmiast, bo to na 99.9% próba włamania do WP.[/quote]
Ja tylko dodam, że by nie stosować 404, bo google bardzo nie lubi tego kodu. xD
No i te nowsze apacze mają nieco inna składnie, przykładowo:
<Files "xmlrpc.php"> Require all denied Require ip 127. 192.168. </Files>
Offline
Ja tylko dodam, że by nie stosować 404, bo google bardzo nie lubi tego kodu. xD[/quote]
A co ma google do interfejsu komunikacyjnego xmlrpc w WP?
Z resztą od czego jest [url=http://poradnik-seo.pl/pozycjonowanie/plik-robots-txt,indeksowanie-stron.html]robots.txt[/url]? xDOstatnio edytowany przez Jacekalex (2016-02-03 04:08:01)
W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem para bellum ;) | Pozdrawiam :)
Offline
A czy macie może jakiś tutorial jak blokować ip przez firewall w debianie ??
Offline
2657
Ostatnio edytowany przez uzytkownikubunt (2016-12-01 01:33:18)
Offline
Dzięki jesteście najlepsi :)
Offline
[quote=Jacekalex]
Ja tylko dodam, że by nie stosować 404, bo google bardzo nie lubi tego kodu. xD[/quote]
A co ma google do interfejsu komunikacyjnego xmlrpc w WP?[/quote]
No google weryfikuje strukturę strony. W nagłówku masz info o tym pliku, no i jak ten twój WP zwróci 404, to google da mu w łeb i obniży rating strony. No bo co to za serwis gdzie brakuje plików? xD Tak czy inaczej w WP można te mechanizmy powyłączać, tak by nie były uwzględniane w nagłówku. Plików też raczej bym nie usuwał (czy nie dawał 404) tylko odmawiał dostępu. Ten ktoś i tak nie uzyska dostępu do tego pliku, a po co dodatkowo drażnić googla? xD
Offline
Time (s) | Query |
---|---|
0.00050 | SET CHARSET latin2 |
0.00010 | SET NAMES latin2 |
0.00394 | 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='18.188.142.146' WHERE u.id=1 |
0.00191 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.188.142.146', 1714781812) |
0.00102 | SELECT * FROM punbb_online WHERE logged<1714781512 |
0.00155 | DELETE FROM punbb_online WHERE ident='3.147.65.65' |
0.00145 | DELETE FROM punbb_online WHERE ident='5.255.231.74' |
0.00155 | DELETE FROM punbb_online WHERE ident='54.36.148.83' |
0.00164 | DELETE FROM punbb_online WHERE ident='85.208.96.200' |
0.00169 | 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=28229 AND t.moved_to IS NULL |
0.00020 | SELECT search_for, replace_with FROM punbb_censoring |
0.00542 | 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=28229 ORDER BY p.id LIMIT 0,25 |
0.00164 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=28229 |
Total query time: 0.02261 s |