Linux за българи: Форуми

Linux секция за напреднали => Начини за увеличаване на бързодействието => Темата е започната от: bonbon в Jan 13, 2009, 20:25



Титла: apache + mysql
Публикувано от: bonbon в Jan 13, 2009, 20:25
Здравейте.

Ако случайно съм сбъркал форума, моля за извинение, но не намерих друго подходящо место.

Имам машина с процесор Intel Quad Core Xeon X3210 / 8MB
RАМ 2GB

На него имам пуснати apache и mysql-server.

В конфига на apache-то съм задал следното:
.........
<IfModule mpm_prefork_module>
     StartServers      15
     MinSpareServers      20
     MaxSpareServers      25
     ServerLimit      200
     MaxClients         128
     MaxRequestsPerChild        64

</IfModule>

<IfModule mpm_worker_module>
     StartServers      15
     MinSpareServers      20
     MaxSpareServers      25
     ServerLimit      200
     MaxClients         128
     MaxRequestsPerChild        64
</IfModule>
..........

В конфига на mysql имам следното
.........
skip-locking
key_buffer       = 384M
max_allowed_packet    = 16M
table_cache       = 512
sort_buffer_size    = 2M
read_buffer_size    = 2M
read_rnd_buffer_size    = 8M
myisam_sort_buffer_size = 64M
thread_cache_size    = 8
query_cache_size    = 32M
query_cache_limit       = 2M
max_connection       = 300
wait_timeout            = 120
max_connect_errors      = 1000

skip-networking
skip-name-resolve
...................

Проблема ми е че сървъра е много  натоварен - apache-то прави над 500 000 импресий на ден.

Когато пусна mtop,  виждам че една заявка отнема над 10 секунди за отговор.

Ако обече вляза в mysql-сървъра през конзола, каквато и заяфка да напиша се изпълнява веднага.

Ако увелича броя на MaxClients над 128, ситуацията става още по-лоша, една заявка отнема над 40 секунди.

Като погледна използването на паметта- има свободни над 1G

Къде бъркам?

Благодаря на всички предварително.


Титла: Re: apache + mysql
Публикувано от: teh в Jan 13, 2009, 21:12
Кое му е натоварено на сървъра или гледаш само "load average", който сам по себе си не може да ти каже много. И знаеш ли какво точно го товари?

Няма как някой да ти даде еднозначен отговор или пък да го събере в едно изречение къде точно бъркаш. Трябва да си прегледаш всеки един слой от това което си натворил/наследил/купил/наел/whatever до момента и да оптимизираш всеки. Има голям шанс нещата да не са оптимизирани (изобщо или добре) и да подобриш от видимо до драстично работата на приложението което върви отгоре (дай боже да е едно), стига да знаеш какво правиш.

Но така в тъмното на малко хора им се стреля ... или ако им се стреля е за упражнение щото разбираш ли нямат достатъчно опит ;-)

Ако зададеш конкретен въпрос има шанс да получиш някакво напътствие ... но "Full LAMP stack optimization guide for dummies" никоя уважаваща себе си нинджа няма да седне да ти пише тук ;-)


Титла: Re: apache + mysql
Публикувано от: ANTIADMIN в Jan 13, 2009, 21:49
Защо направо не му кажеш, че трябва да си плати на хора, за да му свършат работата. Нинджи минджи, корейски, китайски защити... смешки :D


Титла: Re: apache + mysql
Публикувано от: teh в Jan 13, 2009, 22:28
Точно това съм му казал, че ако иска всичко на готово - във форум не става. Ако предполагаш, че на дадено място има хора с еди какви си знания и се надяваш да измъкнеш от тях безплатно информация която ти нямаш то трябва да им представиш нещата така, че да не ги затруднява да ти дадат бърз отговор. Иначе е малко вероятно някой да се занимава.

Пуснал е част от mysql конфигурация и говори за дълги query-та. Като начало може да пусне slow query log-а и да каже  отделно, че за бавни query-та смята такива над секунда. След това с mysqldumpslow да ги прегледа и според каквито са резултатите ако може да ги оптимизира. Според зависи какви са таблиците за някои е по добре да се ползва myisam storage engine, за други е по-добре innodb (за отделните имаш различни опции за отдаване на хардуерни ресурси в mysql конфига). Ако не могат да се оптимизират то тогава според случая може да се сложи и някакъв caching layer м/у клиента и mysql сървъра.

Варианти много ... повече информация за mysql tuning: http://www.mysqlperformanceblog.com/


Титла: Re: apache + mysql
Публикувано от: gat3way в Jan 13, 2009, 23:47
Дали е I/O bottleneck или много locking, не знам, по-вероятно второто. При всички положения, въвеждането на кеширащ tier (memcached да речем) ще помогне доста, лошото е че трябва да се пипа по приложението. Също така, пазенето на сесиите в база почва да става проблемно при такива условия, постоянно има select-и и insert-и, първите изчакват вторите да завършат, това става грозно при повечко заявки.

И въобще не е ясно къде ти е bottleneck-a, дали наистина е в базата или в application tier-a, въобще не става ясно процесорното време ли е проблемно, I/O-то ли е, какво е.

Load average какво да ти говори...4 ядра срещу 128 форкнати client процеса е нормално да покаже голяма стойност. Въобще не е релевантна тази стойност.


Титла: Re: apache + mysql
Публикувано от: bonbon в Jan 14, 2009, 15:35
Благодаря за линка на teh.
Оправих се .


Титла: Re: apache + mysql
Публикувано от: beginner в Jan 14, 2009, 17:16
Благодаря за линка на teh.
Оправих се .

Може ли да споделиш в случая какво ти е помогнало?Може да е от ползва и на други? Благодаря ти.
Поздрави