|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MySQL - Производительность MYSQL-2 |
|
MySQL - Производительность MYSQL-2
|
Пользователь Сообщения: 78 |
Профиль | Отправить PM | Цитировать Добрый день!
Суть такая. (уже писал) - создано приложение на С, крутится на Debian, с использованием коннектора mysql. Все бы хорошо, но начал замечать одну вещь - при значительном нарастании количества одновременных соединений начинает притормаживать база, причем разумеется не вся, а таблица к которой идет наибольшее количество обращений, и как следствие остального. Для теста провожу много раз простейший запрос. SELECT * FROM `data` WHERE `hexkey` = '0010005D04FB' Вот время ответа: 0.0006 0.0048 0.1391 0.0005 5.1097 0.0005 0.6763 А оно между тем живет своей жизнью, естественно, попадаются моменты пиковой нагрузки. параметр max_connections выставлен в 5000. Хотя целиком комп живет на core2duo и 1 ГБ ОЗУ, перед безусловно обязательным мероприятием - заменой сервера на XEON и т.д очень бы хотелось разобраться - что можно оптимизировать в этой ситуации. на Хабре и в Гугле достаточно всякого на эту тему, но может, кто конкретно знает куда копать? |
|
Отправлено: 14:30, 30-08-2016 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать evpu, вы уверены, что ваш тест корректен?
Кроме самого запроса, его можно оптимизировать как "руками", так и средствами MySQL (план выполнения запроса). Если прям так надо, вытаскивайте таблицу в виртуальную. Цитата evpu:
Посмотреть, какая подсистема (банально жесткий диск) стопорит работу системы. Посмотреть, насколько эффективно настроена работа с ОЗУ (пальцем в небо). Опять же, если углубляться, должны существовать системы нагрузочного тестирования, которые формируют подробный отчет о слабостях установки. Это будет более весомо для начальства, более подробно для вас, и разумеется более корректно, чем банальная множественная выборка. Малость гугления sysbench hp loadrunner jmeter |
|
------- Последний раз редактировалось lxa85, 30-08-2016 в 16:33. Отправлено: 16:25, 30-08-2016 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 78
|
Профиль | Отправить PM | Цитировать Спасибо, изучим.
Ну, пока проблему решили брутально - переносом системы на SSD и кардинальной сменой конфигурации сервера. С core2duo на i5, и памятью с 1ГБ ДДР2 на 8ГБ ДДР3. Debian 8.1 без ничего лишнего... Только мое ядро ПО, LAMP, и админский минимум. В дальнейшем хочу создать зеркалирующий RAID из нескольких SSD только под хранение базы, а сама система на другом SSD. Т.е достаточно тупо в плане оценки причины, но освободился старый сервак, можно будет экспериментировать. С тех пор нагрузка возросла еще вдвое, тормоза как в ноль ушли так там пока и остались. |
Отправлено: 22:13, 18-10-2016 | #3 |
Пользователь Сообщения: 78
|
Профиль | Отправить PM | Цитировать Нагрузка возросла еще вчетверо, снова пошли замедления... присмотрелся к базе - некоторые поля почему-то имели тип varchar хотя логичнее было бы integer. Поменял - опять было приятно отнаблюдать, как время ответа ушло почти в ноль...
Решил новую тему пока не открывать... вопрос, по работе коннектора mysqlclient.so Пока коротко - дебаггинг этого - целая эпопея.. отпишусь позже, опишу структуру приложения. Вопрос такой - если основательно наговнокодить, с эффектом - целый шквал запросов будет пытаться ломануться на неоткрытое соединение (ну не открылось оно... или забыл открыть) - это я про MySQL - может ли быть такое, что в результате этот коннектор затупит настолько, что продолжит ужасающе глючить после отработки указанного шквала запросов? Т.е есть приложение (опишу позже) - оно fork-ом генерирует пару десятков дочерних потоков. В какой-то момент, один из потоков вдруг выдает резко пару десятков попыток запросов без открытия соединения, и как эффект - это ложит все 30 потоков, но не начисто, а где-то наполовину. Приложение работает, но часть данных теряется. Помогает банальный перезапуск приложения. Зарезал генерацию этого конкретного потока - там были обособленные по смыслу специфические процедуры - все исчезло начисто. Непонятно, в упор... это же в отдельном потоке. Даже если бы я пытался там отработать полнейший говнокод - неужели один поток может заставить устойчиво погнать целый коннектор? |
Отправлено: 23:00, 03-01-2017 | #4 |
Новый участник Сообщения: 1
|
Профиль | Сайт | Отправить PM | Цитировать Суть понял, только вот как проделать оптимизацию это вопрос
|
|
Отправлено: 16:18, 16-02-2017 | #5 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - Производительность? | silalex | Microsoft Windows 2000/XP | 20 | 20-01-2013 15:20 | |
[решено] установил apache+php+MySQL но MySQL не работает | ejik_off | Вебмастеру | 13 | 10-05-2011 21:54 | |
MySQL - MySQL & MySQL-Front | timon4ik | Программирование и базы данных | 2 | 06-04-2008 18:07 | |
MySQL - Информация. Производительность MySQL. Sun Solaris 10 | kim-aa | Программирование и базы данных | 0 | 24-01-2008 13:54 | |
Производительность | Sergo | Microsoft Windows 2000/XP | 12 | 08-01-2006 00:39 |
|