| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Общие вопросы > Большое кол-во запросов к mysql |
| Автор: n4n0bit 20.6.2008, 13:24 | ||||
| Доброе время суток. Пишу небольшую примочку к squid, что та вроде биллинга. Написал я редиректор для squid-a, работает он справно, но как принес из дома на работу, там примерно 50-60 компов, то mysql начал жрать 60-70% CPU, как бы можно было оптимизировать? Или никак? а пользоваться уже существующими ( SquidGuard - работает с Berkeley DB, и тд, их валом ). Или мне поменять БД? Дела в том что запросов через редиректор проходит много, ну скажем человек запросил какой нить ресурс где куча картинок <img src> и эти ссылки все будут проходить через редиректор, а людей то много и mysqld много жрет проца. Нужели в этой ситуации будет выигрывать Berkeley DB ? Ниже приведена часть редиректора knife.pl :
SquidTools::Redirector::Verifier :
|
| Автор: ginnie 20.6.2008, 14:28 |
| Уважаемый n4n0bit, посмотрите время выполнения запросов в MySQL (http://search.cpan.org/~timb/DBI-1.50/lib/DBI/Profile.pm). По результатам можно будет сделать выводы. |
| Автор: n4n0bit 20.6.2008, 15:28 | ||
Если я делаю /SquidTools/bin/knife.pl а потом передаю аргументы http://xakep.ru 127.0.0.1 tester GET то сбрасывается дамп в файл такого вида:
Но если этот файл юзает squid, то в файл ничего не сбрасывается. |
| Автор: ginnie 20.6.2008, 15:45 | ||
Можно при помощи
явно указать файл, в который будет записываться статистика. Данные в файл запишутся после перезапуска squid. Смотреть лучше на рабочем сервере (чтобы были реальные цифры). |
| Автор: n4n0bit 20.6.2008, 15:59 | ||||||
Файл Virifier.pm изменил след образом:
Результат домпа DBI::DataDumper:
Первоночально top показывал что mysqld жрет 70% CPU и машина заметно тормозило, сейчас при тестировании ниже приведенным сценарием CPU грузится до 7%, разница заметна, хочу выразить благодарность ginnie
ps: При использовании модуля DBI::ProfileDumper squid сбрасывал файл дампа в свою директорию где лежит его кэш /usr/local/squid/cache ( см. топик выше ) |
| Автор: gcc 20.6.2008, 20:57 | ||
ачем логи килать в мускул? лучше в файл а из него потом брать, а apache именно так сделано...
попробуйте оптимизировать, например если у вас памяти 2Gb и более, то попробуйте поставить больше памяти для ключей и т.д... можите постаивить несоклько серверов, сделать один кластер... |
| Автор: n4n0bit 20.6.2008, 22:40 |
| gcc золотые слова =) мне даже не дают еще один комп для поднятия домена =))) Чесн сказать немнога вас не понял, ну у меня и берутся логи из фала а потом в mysql, т.е. access.log squid-a остается в оригинале. Памити вроде 2Gb, хотя не уверен, но то что я делал сегодня это на моем домашнем ПК с 512 ОЗУ, думаю на работе будет работать справнее. |
| Автор: gcc 21.6.2008, 02:18 |
| а почему вы записываете в DB Berkley? ну на apache при 1000 пользователей, открыты всегда лог файлы в них записываються всегда логи, и ничего не грузит, грузит но не сильно... если все это записвать в мускул, то говорят, что будет грузить может mysql грузится потомучто в нее выполняют insert, а не select? |
| Автор: n4n0bit 23.6.2008, 14:51 |
| gcc Mysql грузился не при insert а при select, когда пользователи делаю кучу запросов, тогда было гружение, а при добавлении данных в БД insert-ом проц грузит тока перл скрипт который добавляет, но это решается путем использования модуля Time::HiRes ф-ции sleep при построчном чтении. ps: всем спс |