- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов

В 2023 году Одноклассники пресекли более 9 млн подозрительных входов в учетные записи
И выявили более 7 млн подозрительных пользователей
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
приветствую ув. форумчане
проблемка такая...
есть VPS ОЗУ 1ГБ (гарантированно 750Мб), ~40 сайтов большинство (80%) на WP, трафа немного
10Гб в день (большинство боты), 75-80% 1 сайт (самопис - проблемный, ниже описал его)
в последнее время зависала БД (MySQL) - скрипты не могли приконнектиться, причём через панельку (Plesk) сервис показывает запущен - не останавливается и не перезагружается...
приходится весь контейнер перезагружать..
память чуть ли не всегда занята 50-80%, во вкладочке системные процессы - процесс /usr/sbin/mysqld - %CPU => ~30
тыкался мыкался... поставил munin (стату посмотреть).. заметил что есть медленные запросы (long query time - 10 сек)..
посмотрел их - большие траблы были с одной таблицей (данные на 85Мб + индекс 45 Мб, ~ 65.000 строк)
двиг самопис, с поиском по тексту из этой проблемной таблицы..
оптимизировать там особо нечего - индексы проставлены...
при отключении сайта (использующий проблемную таблицу), во вкладочке системные процессы - процесс /usr/sbin/mysqld - %CPU => до 15
остановил добавление новых материалов, удалил ~1/3 ненужных данных, таблица стала (данные на 50Мб + индекс 25Мб, ~38.000 строк)
сейчас крайне редко появляются медленные запросы - та же таблица НО
-------------------------------------------------------------------------
теперь довольно часто (пару раз за час) вешается apache - и все сайты отключаются... приходится контейнер перезагружать
munin удалил... без разницы - повис..
во вкладочке системные процессы - процесс /usr/sbin/mysqld - %CPU => постепенно растёт до ~40 иногда опускается до 30
в логе ошибок появилось следующее
[ERROR] /usr/sbin/mysqld: Out of memory (Needed 33554404 bytes)
[ERROR] Out of memory; check if mysqld or some other process uses all available memory; if not, you may have to use 'ulimit' to allow mysqld to use more memory or you can add more swap space
понимаю не хватает ресурсов, MySQL перезагружается, а чего apache зависает?
и как правильно настроить MySQL, чтоб ничего не зависало и не отключалось (если не хватает ресурсов пусть подождёт пока освободятся)? - т.к. много сайтов (80%) на WP желательно под них
40 БД, самая большая 85Мб, остальные 55Мб, 40Мб, 30Мб, 20Мб, парочка 15Мб, остальные <10Мб
вот некоторые значения
table open cache - 131,072
tmp table size - 256Мb
max heap table size - 256Мb
если нужны какие ещё - скажите, сообщу..
"понимаю не хватает ресурсов, MySQL перезагружается, а чего apache зависает?"
что значит зависает, в error log смотрите чего он пишет
"и как правильно настроить MySQL, чтоб ничего не зависало и не отключалось"
нужно настраивать исходя из кол. ресурсов сервера и планируемой нагрузки, в идеале конечно еще и на базы стоит взглянуть но это отдельный разговор.
"
table open cache - 131,072
tmp table size - 256Мb
max heap table size - 256Мb
"
ну и куда вы столько накрутили, рекомендую вернуть дефолтный конфиг для начала.
запросы к базе проблемные покажите и желательно их план выполнения
Den73, error_log при зависании чист - браузер не может найти сервер...
дефолтного конфига уже нет - давно меняли эти цифры - норм всё работало... оч редко раз в 3-4 мес отключался.. поищу в гугле что нибудь.. спасибо!
Оптимизайка, не сохранил его.. как будет выложу.. план выполнения - explain? отдельно выполнить медленный запрос в phpmyadmin с ним?
помню делали изменения настройки mysql из-за красных цифер в phpmyadmin - вкладка состояние..
Created tmp disk tables, увеличили tmp_table_size и max_heap_table_size - циферка осталась красной но заметно меньше.. сейчас 850
Opened tables, увеличили table_open_cache - циферка сейчас тоже красная => 165
вот медленный запрос (1 за 25 мин)
Explain - причём был выполнен довольно шустро - макс пару сек.. никак не 10,6 как в логе
Индексы стоят на все 3 интовых поля? Date в каком формате хранится? Unix timestamp? Индекс проставлен? Сколько времени ъвыполняется данный запрос?
Explain - причём был выполнен довольно шустро - макс пару сек.. никак не 10,6 как в логе
из таблицы brand выборка не использует индексы. Постройте индекс или перепишите запрос
sg552, индексы стоят, поле `date` тип DATETIME - без индекса
izbushka, поле `id` - стоит индекс PRIMARY..
убрал все изменения в my.cnf - по идее он берёт дефолтные значения, с mysql всё норм - медленные запросы были, но не зависал и ошибок не выдавал.. а вот с apache проблемка была вчера - завис, сайты были не доступны..
отключил проблемный сайт, посмотрим что да как будет... по нагрузке всё ~ на прежнем урвне
поле `id` - стоит индекс PRIMARY..
Это, несомненно, замечательно, однако в условии используется поле WHERE brand.status="1" .
если ставить на все поля индекс - то размер индекса будет больше самих данных :)
`status` или 0 или 1 - TINYINT...
сайт отключили, но особой разницы не заметили пока...
если ставить на все поля индекс - то размер индекса будет больше самих данных
`status` или 0 или 1 - TINYINT...
Не на все поля, а на те по которым идет выборка. А у вас как раз наоборот.
status, если он 0 или 1, удобнее делать не tinyint a enum('0','1')
izbushka, спасибо - учту этот момент...
по id склеиваю, по текстовым полям поиск работает, статус - показывать в результах или нет и дата для сортировки... можно конечно отказаться от даты и использовать id - но опять же неужели из-за этого VPS ложится? ))