512мб впс падает mysql

G-and-Y
На сайте с 29.06.2013
Offline
156
#41

Шаред это шаред, за такие деньги 10гб ссд не возьмешь это рас, сайты долго грузятся это 2, а если это хобби так даже интересно с этим всем разобратся.

Абузо-устойчивые впс в Нидерландах от 5$/мес (https://cp.inferno.name/aff.php?aff=2991)
Glueon
На сайте с 26.07.2013
Offline
172
#42

Если MySQL может быть не виноват и виноват PHP, то почему может не спасти memory_limit + MaxClients?

Есть много IP-сетей в аренду под прокси, парсинг, рассылки (optin), vpn и хостинг. Телега: @contactroot ⚒ ContactRoot команда опытных сисадминов (/ru/forum/861038), свой LIR: сдаем в аренду сети IPv4/v6 (/ru/forum/1012475).
Andreyka
На сайте с 19.02.2005
Offline
822
#43
G-and-Y:
а если это хобби так даже интересно с этим всем разобратся.

Как разберетесь - напишите что было, нам интересно.

Не стоит плодить сущности без необходимости
P
На сайте с 16.03.2009
Offline
144
#44
G-and-Y:
Выход? Купить мощьнее впс?

Продаю, обращайтесь ;)

G-and-Y
На сайте с 29.06.2013
Offline
156
#45

poiuty, спс пока полет норм

Поменял в апаче

было:

<IfModule mpm_prefork_module>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 50
MaxClients 50
MaxRequestsPerChild 500
</IfModule>

сделал:

<IfModule mpm_prefork_module>
StartServers 3
MinSpareServers 3
MaxSpareServers 5
ServerLimit 40
MaxClients 40
MaxRequestsPerChild 100
</IfModule>

Нагрузил сервисом http://loadimpact.com + content downloader поиск ссылок, полет норм,

только в весте показало что процес апач 1 мин, походу перезапустился, мускуль 23ч.

G-and-Y
На сайте с 29.06.2013
Offline
156
#46

Такая ситуация заметил большое количество запросов с ип 198.204.242.211, порядка 90 по данным команды

netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

забанил

-A BAN -s 198.204.242.211/32 -j DROP

Порылся в инете нашел правила для iptables, при применении правила нагрузки нет по top но сайты тормозят особенно админки, я так понимаю нагрузка идет на уровне ядра.

конфиг в iptables

# Generated by iptables-save v1.4.14 on Wed Aug 13 18:11:17 2014
*filter
:INPUT ACCEPT [6:448]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [303:691505]
:ssh_brute_check - [0:0]
-A INPUT -s 178.154.0.0/24 -m comment --comment " Return yandex SE ip range" -j RETURN
-A INPUT -s 93.158.0.0/24 -m comment --comment " Return yandex SE ip range" -j RETURN
-A INPUT -s 95.108.0.0/24 -m comment --comment " Return yandex SE ip range" -j RETURN
-A INPUT -s 77.88.0.0/24 -m comment --comment " Return yandex SE ip range" -j RETURN
-A INPUT -s 213.180.0.0/24 -m comment --comment " Return yandex SE ip range" -j RETURN
-A INPUT -s 66.249.0.0/24 -m comment --comment " Return google SE ip range" -j RETURN
-A INPUT -s 74.125.0.0/24 -m comment --comment " Return google SE ip range" -j RETURN
-A INPUT -s 173.194.0.0/24 -m comment --comment " Return google SE ip range" -j RETURN
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m conntrack --ctstate NEW -m tcp --dport 80 -j ssh_brute_check
-A ssh_brute_check -m conntrack --ctstate NEW -m recent --update --seconds 10 --hitcount 10 --name DEFAULT --rsource -j DROP
-A ssh_brute_check -m recent --set --name DEFAULT --rsource -j ACCEPT
COMMIT
# Completed on Wed Aug 13 18:11:17 2014

Подскажите как лучше это все блокировать?

Andreyka
На сайте с 19.02.2005
Offline
822
#47

Через cloudflare

JS
На сайте с 18.07.2014
Offline
0
#48

Действительно, проксируйте через CF и блокируйте то что необходимо, на уровне CloudFlare, так как на сколько мне известно правила в iptables создают дополнительную нагрузку на оборудование при обратке заданных правил.

G-and-Y
На сайте с 29.06.2013
Offline
156
#49
Andreyka:
Как разберетесь - напишите что было, нам интересно.
ИТОГ

Что я сделал

apache2.conf

Timeout 30

KeepAlive Off
MaxKeepAliveRequests 100
KeepAliveTimeout 10

<IfModule mpm_prefork_module>
StartServers 3
MinSpareServers 3
MaxSpareServers 5
ServerLimit 25
MaxClients 25
MaxRequestsPerChild 100
</IfModule>

источник

nginx.conf

worker_rlimit_nofile 80000;

events {
worker_connections 65536;
use epoll;
}


http {
# Main settings
sendfile on;
tcp_nopush on;
tcp_nodelay on;
client_header_timeout 1m;
client_body_timeout 10;
client_header_buffer_size 2k;
client_body_buffer_size 256k;
client_max_body_size 100m;
large_client_header_buffers 4 8k;
send_timeout 2;
keepalive_timeout 0;
reset_timedout_connection on;
server_tokens off;
server_name_in_redirect off;
server_names_hash_max_size 512;
server_names_hash_bucket_size 512;

access_log off;
gzip off;

источник

my.cnf

max_connections=200

max_user_connections=30
wait_timeout=30
interactive_timeout=50
long_query_time=5
innodb_file_per_table

key_buffer_size = 128M
table_cache = 512
query_cache_size = 64M
thread_cache_size = 16

источник

sysctl.conf

net.ipv4.conf.all.accept_redirects = 0

net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.tcp_max_orphans = 65536
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_keepalive_time = 1800
net.ipv4.tcp_keepalive_intvl = 15
net.ipv4.tcp_keepalive_probes = 5
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_mem = 50576 64768 98152
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.tcp_orphan_retries = 0
net.ipv4.tcp_syncookies = 1
net.ipv4.netfilter.ip_conntrack_max = 16777216
net.netfilter.nf_conntrack_max = 16777216
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_sack = 1
net.ipv4.tcp_congestion_control = htcp
net.ipv4.tcp_no_metrics_save = 1
net.ipv4.route.flush = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.lo.rp_filter = 1
net.ipv4.conf.eth0.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.lo.accept_source_route = 0
net.ipv4.conf.eth0.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_rfc1337 = 1
net.ipv4.ip_forward = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_echo_ignore_all = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 1000
net.core.rmem_default = 65536
net.core.wmem_default = 65536
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216

источник

iptables

# Generated by iptables-save v1.4.14 on Wed Aug 13 14:30:08 2014

*filter
:INPUT ACCEPT [68:6606]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1263:1516982]
:BAN - [0:0]
:ssh_brute_check - [0:0]
-A INPUT -p tcp -m conntrack --ctstate INVALID,NEW -m tcp --tcp-flags SYN,ACK SYN,ACK -j REJECT --reject-with tcp-reset
-A INPUT -j BAN
-A INPUT -p tcp -m string --string "msnbot" --algo bm --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "BLEXBot" --algo bm --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "MJ12bot" --algo bm --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "BuddhaBot" --algo bm --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "Ezooms" --algo bm --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "AhrefsBot" --algo bm --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "Baiduspider" --algo bm --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "PaperLiBot" --algo bm --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "Twitterbot" --algo bm --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "QuerySeekerSpider" --algo bm --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "meanpathbot" --algo bm --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "SemrushBot" --algo bm --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "SolomonoBot" --algo bm --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "Butterfly" --algo bm --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "UnwindFetchor" --algo bm --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "rogerbot" --algo bm --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "NING" --algo bm --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "TweetmemeBot" --algo bm --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "SeznamBot" --algo bm --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "coccoc" --algo bm --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "Yeti" --algo bm --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "Moreover" --algo bm --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "TurnitinBot" --algo bm --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "METASpider" --algo bm --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "Nekstbot" --algo bm --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "DotBot" --algo bm --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "msnbot" --algo kmp --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "BLEXBot" --algo kmp --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "MJ12bot" --algo kmp --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "BuddhaBot" --algo kmp --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "Ezooms" --algo kmp --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "AhrefsBot" --algo kmp --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "Baiduspider" --algo kmp --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "PaperLiBot" --algo kmp --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "Twitterbot" --algo kmp --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "QuerySeekerSpider" --algo kmp --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "meanpathbot" --algo kmp --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "Mail.RU_Bot" --algo kmp --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "SemrushBot" --algo kmp --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "SolomonoBot" --algo kmp --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "Butterfly" --algo kmp --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "UnwindFetchor" --algo kmp --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "rogerbot" --algo kmp --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "NING" --algo kmp --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "TweetmemeBot" --algo kmp --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "SeznamBot" --algo kmp --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "coccoc" --algo kmp --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "Yeti" --algo kmp --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "Moreover" --algo kmp --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "TurnitinBot" --algo kmp --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "METASpider" --algo kmp --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "Nekstbot" --algo kmp --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m string --string "DotBot" --algo kmp --to 65535 -m tcp --dport 80 -j DROP
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m conntrack --ctstate NEW -m tcp --dport 22 -j ssh_brute_check
-A INPUT -p tcp -m conntrack --ctstate NEW -m tcp --dport 80 -j ACCEPT
-A BAN -s 198.204.242.211/32 -j DROP
-A ssh_brute_check -m conntrack --ctstate NEW -m recent --update --seconds 300 --hitcount 3 --name DEFAULT --rsource -j DROP
-A ssh_brute_check -m recent --set --name DEFAULT --rsource -j ACCEPT
COMMIT
# Completed on Wed Aug 13 14:30:08 2014

источник

A
На сайте с 19.07.2010
Offline
130
#50

Если будет желание повозиться, то можете поднять KeepAlive между nginx и апачем. (хотя подозреваю, что выигрыш будет минимальным)

mysql у вас абсолютно не настроен.. возьмите тюнер mysqltuner.pl - сами увидите что к чему.

iptables - бездумный копи-паст, правила дублируются, да и сам список юзер агентов вызывает вопросы... но это личное дело каждого.

да и банить по юзер-агенту(и не только) удобнее в nginx(из бонусов - удобный лог, который можно изредка просматривать на предмет косяков в банах), а не тупо дропать в iptables.

нагрузка именно от этих ботов мелкая, nginx ее и не заметит.

ps: по iptables, создайте на любом из своих сайтов страничку с именем Yeti.html или Skoda-Yeti.html, а потом можете искренне удивиться: почему со всего сайта именно эти страницы не открываются и не индексируются.

pss: еще смешнее будет, если поставить своим юзерам куку содержащую текст "Yeti"... что произойдет?..

.............

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий