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/.
Cześć,
ostatnio zaczął mi siadać jeden z VPS, po restarcie patrząc poprzez VNC, praktycznie zaraz po starcie wszystkich usług, ukazał mi się taki o to obrazek:
[url=http://www.fotosik.pl/showFullSize.php?id=e75c824ba35aac10][img]http://images61.fotosik.pl/1045/e75c824ba35aac10m.jpg[/img][/url]
Problem jest z apache & mysql, pytanie do Was, jak temu zapobiec.
VPS odpalony via kvm z ustawieniami:
-smp 4 \
-m 8G \[/quote]
Offline
Po pierwsze vnc do shella? Przecież putty wystarczy.
Co do komunikatu to niewiele to mówi oprócz tego co sobie z angielskiego na polskie przetłumaczymy.
Dostań się po ssh do consoli i pokaż wszystko: opciążenie, usługi jakie działają, zrestartuj sobie mysql i obserwuj co się dzieje. Czy mysql odbiera połączenia tylko z localhost czy zewnątrz. Być może ktoś cię ddos -je. Sprawdź tcpdumpem co się dzieje na interfejsach.
Offline
lewyx84 - sprawdź miejsce na parycjach ;)
@hello_world - przez ssh nie zobaczysz jak się system bootuje ;]
Offline
Możesz te w konfigu my.cnf ustawić by MySQL był bardziej "gadatliwego" i wówczas zobaczyć co sypie do logów.
Offline
błąd "too many connections" wyskakuje w 2 przypadkach:
1) osiągnięto/przekroczono maksymalną liczbę połączeń do mysqla
2) brak miejsca na dysku
Najczęście występuje numerek 2 ;) A jako, że błąd się pojawia przy startowaniu usługi to na 99,8% jest to problem z miejscem na dysku/partycji.
Offline
@hello_world
VNC, ponieważ jak system jest obciążony na 100% to nie dostaniesz się via ssh, albo trwa to bardzo długo.
Mysql przyjmuje połączenia z zewnątrz, które są dodane do firewalla i są to jakieś CSy znajomego, reszta jest wycięta ( poza localhost )
@winnetou
Nie wydaje mnie się :P
System plików rozm. użyte dost. %uż. zamont. na
rootfs 48G 41G 4,5G 91% /
udev 10M 0 10M 0% /dev
tmpfs 801M 224K 801M 1% /run
/dev/disk/by-uuid/1e146766-daf3-4234-b63b-d613570499e9 48G 41G 4,5G 91% /
tmpfs 5,0M 0 5,0M 0% /run/lock
tmpfs 2,0G 0 2,0G 0% /run/shm[/quote]
Ogólnie jak wyłącze forum znajomka to problem ustaje, ale cholera on ma ok 50 wejść dziennie, więc nie powinno to być problemem.
@life
Mógłbyś podrzucić którą mniej więcej zmienną?
Ja kombinowałem z tymi:# * Fine Tuning
#
key_buffer = 16M
key_buffer_size = 64M
max_allowed_packet = 16M
thread_stack = 192K
thread_cache_size = 8
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover = BACKUP
max_connections = 200
join_buffer_size = 200
table_cache = 90
#thread_concurrency = 10
#
# * Query Cache Configuration
#
query_cache_limit = 8M
query_cache_size = 64M[/quote]
Jak pisałem, VPS postawiony via KVM, dysk dodany zmienną-drive file=hda,if=virtio,index=1,cache=none \[/quote]
Format dysku to RAW.
Ale nie wydaje mi się, żeby to dysk nie dawał radyOffline
A może ktoś "jakiś boot" młóci tego Mysqla próbując złamać siłowo hasło roota?
Weź zobacz, czy spadnie obciążenie, jak zablokujesz na maszynie głównej dostęp do Mysql na virtualce.
W każdym razie VNC możesz sobie w buty wsadzić, potrzebne są logi systemowe.
Offline
Wycinek z /var/log/messages
[url]http://wklej.org/hash/d14e35f68c4/[/url]
Screen z htop
[url=http://www.fotosik.pl/showFullSize.php?id=cfe5197785b248dc][img]http://images61.fotosik.pl/1047/cfe5197785b248dcm.png[/img][/url]
Więc to jednak apache, a nie mysql...
Wycinek z apache.conf
##
## Server-Pool Size Regulation (MPM specific)
##
# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
ServerLimit 500
MaxClients 500
MaxRequestsPerChild 400
</IfModule>
# worker MPM
# StartServers: initial number of server processes to start
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadLimit: ThreadsPerChild can be changed to this maximum value during a
# graceful restart. ThreadLimit can only be changed by stopping
# and starting Apache.
# ThreadsPerChild: constant number of worker threads in each server process
# MaxClients: maximum number of simultaneous client connections
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_worker_module>
StartServers 2
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
# event MPM
# StartServers: initial number of server processes to start
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxClients: maximum number of simultaneous client connections
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_event_module>
StartServers 2
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxClients 500
MaxRequestsPerChild 0
</IfModule>[/quote]
Może by coś tu pozmieniać
Popatrzyłem w tcpdump i w momencie kiedy obciążenie skacze na 100% pojawia się m.in., win 315, options [nop,nop,TS val 129427 ecr 3497221509], length 0
21:18:15.239560 IP (tos 0x0, ttl 58, id 55838, offset 0, flags [DF], proto TCP (6), length 1500)
a184-25-216-60.deploy.static.akamaitechnologies.com.http > moj.server.41245: Flags [.], cksum 0xedce (correct), seq 18825:20273, ack 202, win 7776, options [nop,nop,TS val 3497221509 ecr 129426], length 1448
21:18:15.239603 IP (tos 0x0, ttl 64, id 25992, offset 0, flags [DF], proto TCP (6), length 52)
moj.server.41245 > a184-25-216-60.deploy.static.akamaitechnologies.com.http: Flags [.], cksum 0x5543 (incorrect -> 0x5b35), seq 202, ack 20273, win 306, options [nop,nop,TS val 129427 ecr 3497221509], length 0
21:18:15.239643 IP (tos 0x0, ttl 58, id 55839, offset 0, flags [DF], proto TCP (6), length 1500)
a184-25-216-60.deploy.static.akamaitechnologies.com.http > moj.server.41245: Flags [.], cksum 0xad66 (correct), seq 20273:21721, ack 202, win 7776, options [nop,nop,TS val 3497221510 ecr 129426], length 1448
21:18:15.239679 IP (tos 0x0, ttl 58, id 55840, offset 0, flags [DF], proto TCP (6), length 1500)
a184-25-216-60.deploy.static.akamaitechnologies.com.http > moj.server.41245: Flags [.], cksum 0x7d6c (correct), seq 21721:23169, ack 202, win 7776, options [nop,nop,TS val 3497221510 ecr 129426], length 1448
21:18:15.239720 IP (tos 0x0, ttl 58, id 55841, offset 0, flags [DF], proto TCP (6), length 1500)
a184-25-216-60.deploy.static.akamaitechnologies.com.http > moj.server.41245: Flags [.], cksum 0xcdff (correct), seq 23169:24617, ack 202, win 7776, options [nop,nop,TS val 3497221510 ecr 129426], length 1448
21:18:15.239751 IP (tos 0x0, ttl 58, id 55842, offset 0, flags [DF], proto TCP (6), length 1500)
a184-25-216-60.deploy.static.akamaitechnologies.com.http > moj.server.41245: Flags [.], cksum 0x1869 (correct), seq 24617:26065, ack 202, win 7776, options [nop,nop,TS val 3497221510 ecr 129426], length 1448
21:18:15.239791 IP (tos 0x0, ttl 58, id 55843, offset 0, flags [DF], proto TCP (6), length 1500)
a184-25-216-60.deploy.static.akamaitechnologies.com.http > moj.server.41245: Flags [.], cksum 0x9168 (correct), seq 26065:27513, ack 202, win 7776, options [nop,nop,TS val 3497221510 ecr 129426], length 1448
21:18:15.239825 IP (tos 0x0, ttl 58, id 55844, offset 0, flags [DF], proto TCP (6), length 1500)
a184-25-216-60.deploy.static.akamaitechnologies.com.http > moj.server.41245: Flags [.], cksum 0x0d0a (correct), seq 27513:28961, ack 202, win 7776, options [nop,nop,TS val 3497221510 ecr 129426], length 1448
21:18:15.239863 IP (tos 0x0, ttl 58, id 55845, offset 0, flags [DF], proto TCP (6), length 1500)
a184-25-216-60.deploy.static.akamaitechnologies.com.http > moj.server.41245: Flags [.], cksum 0x5423 (correct), seq 28961:30409, ack 202, win 7776, options [nop,nop,TS val 3497221510 ecr 129426], length 1448[/quote]Ostatnio edytowany przez lewyx84 (2014-06-05 21:23:39)
Offline
tak da się ... zmień apache na nginx albo lighttpd :D
i to jest autentyczna porada.
A tak poza tym to tych procesów nie jest za dużo?? ja Apache nie używam więc nie wiem ale w lighttpd mam 2 procesy odpalone, które mi wszystko obsługują.
Ostatnio edytowany przez life (2014-06-05 21:22:21)
Offline
Zedytowałem post, dodałem wycinek z tcpdump.
Zastanawiam się, czy to nie jest ddos, tylko jakim prawem cokolwiek zza granicy wchodzi na port 80, skoro na firewallu dałem DROP dla wszystkich IP na port 80, a następnie puściłem tylko polskie klasy IP
A robiłeś w lighttpd możliwość odpalania php w ver. 5.4 i 5.2.17?
Ostatnio edytowany przez lewyx84 (2014-06-05 21:27:33)
Offline
lewyx84 = nginx + php-fpm śmiga aż miło ;) 5.3.x, 5.4.x, 5.5.x testowałem.
Nie napisałeś co to za system masz na tej wirtualce.
A jak nie chce Ci się kombinować z nginx/lighttpd albo "musisz mieć" obsługę .htaccess to odpal apacza na 127.0.0.1 port 8080 (albo inny dowolny) a przed nim postaw NGiNX żeby robił za proxy.
Offline
Zapewne to nie debianopodobny,
pokaż apache2 -v albo raczej httpd -v
Domyślnie ja u siebie mam
<IfModule mpm_prefork_module> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxRequestWorkers 150 MaxConnectionsPerChild 0 </IfModule>
Nie wiem jak obładowane masz te witryny ale spróbuj zmienić.
Offline
OS:
cat /etc/debian_version
7.5[/quote]apache2 -v
Server version: Apache/2.2.22 (Debian)
Server built: Feb 1 2014 21:26:04[/quote]
Zamienię wartości i zobaczę co wyjdzie, nie mniej jednak skłonię się ku postawieniu nginxa przed apachem.
Nie zmienia to faktu, że w tcpdump widać IP z poza polskiej klasy adresowej które zdołało się dobić do apache, a nie jest dopisany w ACCEPT i to mnie cholernie zastanawia, bo może się okazać, że to po prostu DDoSOffline
Time (s) | Query |
---|---|
0.00010 | SET CHARSET latin2 |
0.00006 | SET NAMES latin2 |
0.00105 | 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.138.101.219' WHERE u.id=1 |
0.00088 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.138.101.219', 1732434583) |
0.00044 | SELECT * FROM punbb_online WHERE logged<1732434283 |
0.00046 | SELECT topic_id FROM punbb_posts WHERE id=269202 |
0.00006 | SELECT id FROM punbb_posts WHERE topic_id=25936 ORDER BY posted |
0.00056 | 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=25936 AND t.moved_to IS NULL |
0.00009 | SELECT search_for, replace_with FROM punbb_censoring |
0.00094 | 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=25936 ORDER BY p.id LIMIT 0,25 |
0.00082 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=25936 |
Total query time: 0.00546 s |