Собственно сабж, есть сервер на котором крутится десятка 2 сайтов разных авторов, и еще большая пачка софта которая конектится к БД через скрипты. Днем когда все пользовали работают с сервером все хорошо, расход оперативы на сервере около 30 процентов, это занятая память всеми процессами линукса. Но как только наступает ночь творится вакханалия, резкий рост потребления оперативы за счет мускула. В течении получаса, мускул на себя берет около 50 процентов оперативы , иногда больше. Проверили лог медленных запросов, там не чего подозрительного нет. Проверили слип запросы - они в течении дня появляются и на расход памяти не как не влияют. Написали даже скрипт делающий kill для слип запросов. Днем все хорошо а ночью хаотично гдето с 22.30 до 5 утра ловинообразно оператива заполняется. Грешили на некоторые крон скрипты, грешили даже на штатный процесс бекапа от ispmanager, передвигали расписание крон скриптов, отключали бекапы. Не как не влияет на хаотичное потребление оперативы. Днем если сделать ребут мускула - потреблеение оперативки так и остается на низком уровне. Поставил на крон задачу, - ребут в 4.30. После перезагрузки через пол часа потребление оперативы опять выросло до прежнего максимального значения. В error журнале мускула только по ночам - too many connections. Не чего более интересного.
возможно ночью поисковик заглядывает куда-то, где пользователи не бывают. Например, поиск по тегам.
Давным давно, когда я админил шаред хостинги, типовой проблемой были неоптимальные запросы к базе. Одна-две паршивых овцы на 300-400 клиентов на одном сервере могли оттянуть на себя все ресурсы.
Типовое решение - просмотреть show full processlist, сделать запросам explain. Как минимум получится отловить те, которые делают сортировку во временных таблицах или делают поиск в текстовых полях. Иногда будет очевидное решение - индексы, иногда будет сложнее - рефакторинг движка сайта - избавиться от декартового произведения где это не нужно, переписать запросы на left join и добавить лимиты, где этого будет достаточно. Иногда решение слишком очевидно.
А после этого думать что делать дальше если проблема осталась.
Tibor 02.12.2022 10:24 пишет: Это не проблема, а симптом.
спойлер...
возможно ночью поисковик заглядывает куда-то, где пользователи не бывают. Например, поиск по тегам.
ок, спасибо, будем копать в эту сторону. Только небольшая ремарка, у нас vps сервер на 32 гб оперативы. Т.е. ресурсов не мало, это совсем не общий хостинг в плане производительности.
kvadjagan 02.12.2022 09:07 пишет: В error журнале мускула только по ночам - too many connections. Не чего более интересного.
Кожен коннекшн як раз і жере оперативну пам'ять, навіть як нічого не робить. Шукайте звідки саме їх стільки ночами набігає.
Дещо пальцем в небо, але чи не доступний той ваш мускл всьому інтернету? Боти тоді набігають паролі перебирать, в мускл невдала спроба логіну - це теж коннекшн.
kvadjagan 02.12.2022 09:07 пишет: В error журнале мускула только по ночам - too many connections. Не чего более интересного.
Кожен коннекшн як раз і жере оперативну пам'ять, навіть як нічого не робить. Шукайте звідки саме їх стільки ночами набігає.
Дещо пальцем в небо, але чи не доступний той ваш мускл всьому інтернету? Боти тоді набігають паролі перебирать, в мускл невдала спроба логіну - це теж коннекшн.
саме так, ви маете рацію, нажать у нас без зовнішнього доступу до БД ніяк не можна адже частина нашого софту працює напряму з БД без проміжних веб скриптів. І так нас по по ночах різні покидьки трошки бруторсять. Але я не думав що брутфорс може зжерти під 16 гб оперативки (половинку від 32, десь так на око).
мускултюнер я проверю, раньше он был, но в августе был переезд, так что не помню, пережил ли он переезд. За линки спасибо, почитаю. Кстати, пока причина утечки не найдена, перебиваемся костылями - боремся с симпотомами. Поставил 3 перезагрузки через крон - 5, 5.30, 6 утра. После 3 перезагрузки - утечек оперетивы нет до полуночи минимум. Т.е. до ближайшего полуночного шабаша.
kvadjagan 03.12.2022 15:22 пишет: нажать у нас без зовнішнього доступу до БД ніяк не можна адже частина нашого софту працює напряму з БД без проміжних веб скриптів. І так нас по по ночах різні покидьки трошки бруторсять. Але я не думав що брутфорс може зжерти під 16 гб оперативки (половинку від 32, десь так на око).
фаєрволом не можна відкрити тільки на окремі айпі? ну чи хоча б якийсь fail2ban
kvadjagan 03.12.2022 15:22 пишет: нажать у нас без зовнішнього доступу до БД ніяк не можна адже частина нашого софту працює напряму з БД без проміжних веб скриптів. І так нас по по ночах різні покидьки трошки бруторсять. Але я не думав що брутфорс може зжерти під 16 гб оперативки (половинку від 32, десь так на око).
фаєрволом не можна відкрити тільки на окремі айпі? ну чи хоча б якийсь fail2ban
нажаль whitelist для підкючення до БД не можна сформувати, бо софт на клієнтських машинах стоїть, там багато різних айпішників. А он скріпт бану за спроби брутфорсити - це варіант.
kvadjagan 02.12.2022 09:07 пишет: В error журнале мускула только по ночам - too many connections. Не чего более интересного.
Кожен коннекшн як раз і жере оперативну пам'ять, навіть як нічого не робить. Шукайте звідки саме їх стільки ночами набігає.
Дещо пальцем в небо, але чи не доступний той ваш мускл всьому інтернету? Боти тоді набігають паролі перебирать, в мускл невдала спроба логіну - це теж коннекшн.
саме так, ви маете рацію, нажать у нас без зовнішнього доступу до БД ніяк не можна адже частина нашого софту працює напряму з БД без проміжних веб скриптів. І так нас по по ночах різні покидьки трошки бруторсять. Але я не думав що брутфорс може зжерти під 16 гб оперативки (половинку від 32, десь так на око).
Як ви геть нічим не обмежуєте брутфорс, то він необмежено сжерти і може, йому ж пофіг десять чпроб зробити чи десять мільйонів.
Ідіть гратись в whitelist. Бо інакше це ніяк не припинити. І парольчик рано чи пізно воно ж підбере якийсь.
Кожен коннекшн як раз і жере оперативну пам'ять, навіть як нічого не робить. Шукайте звідки саме їх стільки ночами набігає.
Дещо пальцем в небо, але чи не доступний той ваш мускл всьому інтернету? Боти тоді набігають паролі перебирать, в мускл невдала спроба логіну - це теж коннекшн.
саме так, ви маете рацію, нажать у нас без зовнішнього доступу до БД ніяк не можна адже частина нашого софту працює напряму з БД без проміжних веб скриптів. І так нас по по ночах різні покидьки трошки бруторсять. Але я не думав що брутфорс може зжерти під 16 гб оперативки (половинку від 32, десь так на око).
Як ви геть нічим не обмежуєте брутфорс, то він необмежено сжерти і може, йому ж пофіг десять чпроб зробити чи десять мільйонів.
Ідіть гратись в whitelist. Бо інакше це ніяк не припинити. І парольчик рано чи пізно воно ж підбере якийсь.
саме так, ви маете рацію, нажать у нас без зовнішнього доступу до БД ніяк не можна адже частина нашого софту працює напряму з БД без проміжних веб скриптів. І так нас по по ночах різні покидьки трошки бруторсять. Але я не думав що брутфорс може зжерти під 16 гб оперативки (половинку від 32, десь так на око).
Як ви геть нічим не обмежуєте брутфорс, то він необмежено сжерти і може, йому ж пофіг десять чпроб зробити чи десять мільйонів.
Ідіть гратись в whitelist. Бо інакше це ніяк не припинити. І парольчик рано чи пізно воно ж підбере якийсь.
дякую, зробимо блекліст для любителів брутфорсу.
Блекліст певніше за все вже не допоможе. Там тих ip мільйон. Тільки вайтліст.
+1 до порад VPN та whitelist. Для початку можна зробити широкий на основі "українських" адрес + пододавати туди партнерів, що працюють з хмар. Єдине одразу подумати як автоматизувати ведення цього листу, щоб його міг редагувати не тільки один єдиний адмін. Наприклад, надати можливість першій ланці підтримки додавати ip-адреси просто по дзвінку партнерів.
дякую всім за поради камради На щастя любителі брутфорсу дуже слабенькі. Перевірили логи, там десь до 100 спроб брутфорсу за ніч. Поставили redis та закинули на нього навантаження з самої навантаженої БД. Поки все супер, графшк навантаження оперативи став прямим майже , без стрибків, поки пікове навантаження 34 відсотки на всю ОЗУ. Ще кілька днів помоніторимо, можливо редіс вирішення всіх проблем.
kvadjagan 09.12.2022 12:40 пишет: дякую всім за поради камради На щастя любителі брутфорсу дуже слабенькі. Перевірили логи, там десь до 100 спроб брутфорсу за ніч. Поставили redis та закинули на нього навантаження з самої навантаженої БД. Поки все супер, графшк навантаження оперативи став прямим майже , без стрибків, поки пікове навантаження 34 відсотки на всю ОЗУ. Ще кілька днів помоніторимо, можливо редіс вирішення всіх проблем.
Осторожно с ним, восстановление может быть проблемным. У него нет транзакций, а есть флеш интервал с оперативки на диск, по умолчанию секунд 10, кажется. Основная ниша его применения - повторяющееся чтение с возможностью замков, и космический по скорости sorted set, на порядки быстрее аналогичных структур того же Постгреса или Мускула, причем не подвержен недостаткам записи при огромных индексах.
Мускул прекрасно справляется с кешированными запросами. Возможно есть смысл перескочить на Постгрес, он быстрее Мускула в регулярных повторяющихся операциях даже без кеширования.
В некоторых вещах, когда работа с БД - это обычные CRUD запросы через REST, есть смысл поставить над всем кеширующий nginx, решает проблему загрузки на всех уровнях. Нужно смотреть конкретную архетиктуру.
Спасибо всем за советы По итогу плотно перебрали движек одного сайта, несколько недель переделок и тестов, все ок стало. Еще удалось избавится от его лютой БД (15 гб одна БД) и все ок. Теперь за счет бекапов isp поднимается во время бекапа расход оперативы ровно на 15 процентов и так удерживается каждый день. Если не делать бекап с помощью isp, а только консольными командами зиповать сайты и делать mysql дамп то прироста расхода оперативы не наблюдается, висит на уровне 30 процентов.