LINUX.ORG.RU
ФорумTalks

http сервер и программисты которые его программируют


0

0

From: Anatoly <mator@localhost.ru>
To: Natasha <natasha@localhost.ru>
Subject: Re: www.localhost.ru

[-- The following data is signed --]

Здравствуйте.

On Thu, Sep 14, 2006 at 11:17:10AM +0400, Natasha wrote:
| Анатолий, вобщем бог с ними со скриптами. Это просто очередной пример
| некорректной работы сервера.
|
| Периодически страницы сайта грузятся очень медленно, а иногда, вот как
| несколько минут назад, выводится сообщение
|
| Can't connect to SQL server
|
| Видимо это происходит в моменты, когда на сайте много посетителей. Сервер
| просто не справляется с нагрузкой.

верно, сервер просто оказался неспособен выдержать такую нагрузку.
Ограничения по количеству соединений (которые как раз приводили к ошибке
can't connect to sql server) с сервером сняли (то есть выставили равным
400).

уже при 200 коннектах на http сервер, запускается порядка 150 mysqld
процессов (для обработки этих самых http коннектов, создаваемых через php)
, в результате чего у сервера физически заканчивается свободная память, он
начинает свопится и все ужасно медленно работает, а после того как и
виртуальная закончится, то будет просто новая ошибка - connection timeout.

что видно из вывода нижеследующих комманд:

srv# ps ax | grep -c mysqld
267
srv# ps ax | grep -c httpd
256
srv# top -bin 1
last pid: 81766; load averages: 3.99, 22.84, 21.78 up 169+22:17:24
15:06:40 569 processes: 1 running, 333 sleeping, 235 waiting

Mem: 708M Active, 67M Inact, 187M Wired, 32M Cache, 111M Buf, 1660K Free
Swap: 1024M Total, 702M Used, 322M Free, 68% Inuse
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
81474 wwwuser 1 96 0 16820K 8128K select 0 0:00 0.10% httpd

Основная рекомендация пока только одна, добавлять серверу прежде всего оперативной
памяти. Потому что от 'ошибки соединения с sql сервером' мы избавились, но
зато теперь будет новая, таймаут соединения, из-за того что у сервера
кончилась память (настоящая и виртуальная).



|
| Прошу прочесть ниже комментарии от программиста.
| From: Krutoi Programmer [mailto:programmer@localhost.ru]
| To: Natasha <natasha@localhost.ru>
| Subject: Re: localhost.ru скрипты и логи
|
| на 95% я уверен, что все проблемы в настройках сервера:
|
|
| 1. Зачем на веб-сервере используется файл(или раздел)
| подкачки? На мой взгляд нужно отключить его.
|
| 2. Почему процессы myslqd занимают в памяти по 480Мб? Надо
| уменьшить занимаемую этими процессами память, либо уменьшить число процессов
| mysqld.

ответ программисту:

1) 3 курс технического института по предмету "операционные системы", что
такое файл подкачки, что такое своп, что такое paging и как это
используется операционной системой. Вкратце, если отключить swap раздел, то
уже при 100 коннектах к серверу у него закончится оперативная память, и
удаленный пользователь увидит в браузере сообщение о таймайте соединения с
сервером.

2) странный вопрос, потому что так работают программы, по типу "вопрос, как
урезать windows xp для установки на i486 с 32Mb оперативной памяти."
Уменьшить обьем занимаемой памяти mysql сервером невозможно, потому что _так_ _работает_ _sql_ _сервер_ . Если уменьшить количество коннектов для mysql сервера, то
вы будете наблюдать картину "can't connect to sql server" снова.





ps: сервер apache+php+mysql+1Gb памяти == зло. (/etc/my.cnf примерно как my-medium.cnf из поставки mysql-4.1).

★★★★★

(Голосом Задорнова) Какие же они все *тупые*! Ну *тупые*!

Не, ну я понимаю, что затыки могут быть, но если они слишком большие, то у меня всегда первое подозрение, что в говнище именно я, а не программисты апача, *SQL'я или даже PHP.

Так оно обычно и оказывается.

З.Ы. Я когда-то думал, что шибко умный, искал баги в PHP, так оказалось потом, что это я главу из мануала асилить не смог. Причем главу по синтаксису.

З.З.Ы. Вообще, проще надо быть. Это предохраняет от ненужного геморроя.

shimon ★★★★★
()

Быть не может )))) ты же в приличном месте работаеш?

Shaman007 ★★★★★
()

Даа... Тяжёлый случай, но знакомый..

MiracleMan ★★★★★
()

какой ужоснах....

а что, выделить 50 баксов для покупки планки памяти на 1 гиг руководство не в состоянии? Или просто нищие все?

тогда просто купи эту планку за свои деньги, а руководству скажи что-то вроде "Если у Вас нет денег, чтобы обеспечить нормальную работу сервера - то я обеспечу ее сам. Можете считать сэкономленные деньги и радоваться огромной экономии."

gr_buza ★★★★
()
Ответ на: комментарий от Teak

главное тут - это сказать о покупке планки памяти так, будто ты плюешь ему в морду.

если человек адекватный - то такое больше не повторится. Если же повторится - то лучше искать другую работу.

какого хрена унижаться и просить?

это не мой выбор.

gr_buza ★★★★
()
Ответ на: комментарий от gr_buza

И не мой. Я просто говорю: надо, а то будет то-то и то-то. И всё.

У меня правда работодатель адекватный.

Teak ★★★★★
()
Ответ на: комментарий от Teak

>Деньги надо нести с работы, а не на работу. Если ты не акционер.

+1

alphex_kaanoken ★★★
()
Ответ на: комментарий от gr_buza

вообще такой тест это как лакмусовая бумажка, особенно если непонятно отношение руководства к подчиненным.

дело тут скорее даже не в деньгах, а в проверке руководителя на честность и порядочность.

Если человек порядочный и честный, то он может вспылить, но ситуацию можно будет решить мирно. А если он, извиняюсь, "чмо", то будет очень хорошо видно, кто есть ху, и увольнение по статье третьей КЗоТ'а будет практически единственным правильным (с человеческой точки зрения) вариантом.

Ессно, такой стресс надо применять, если другого выхода не осталось, и руководство игнорирует твои требования, не игнорируя при этом свои возможности пнуть тебя за то, что сервер не пашет (пашет, не так как надо, etc).

З.Ы. не считаю себя психологом, но мне кажется, что так будет правильно. Хз, может я и неправ.

gr_buza ★★★★
()

> уже при 200 коннектах на http сервер, запускается порядка 150 mysqld процессов (для обработки этих самых http коннектов, создаваемых через php), в результате чего у сервера физически заканчивается свободная память,

mysql-сервер создает потоки, а не процессы, насколько я знаю, при этом размеры разных кешей, в том числе и на каждое соединение, настраиваются в конфурационном файле сервера.

Sorcerer ★★★★★
()

ivlad@iddater ~ 524% pmap -d `pgrep mysql`|grep private
mapped: 2492K    writeable/private: 240K    shared: 0K
mapped: 2492K    writeable/private: 240K    shared: 0K
mapped: 73696K    writeable/private: 67424K    shared: 0K
mapped: 73696K    writeable/private: 67424K    shared: 0K
mapped: 73696K    writeable/private: 67424K    shared: 0K
mapped: 73696K    writeable/private: 67424K    shared: 0K
mapped: 73696K    writeable/private: 67424K    shared: 0K
mapped: 73696K    writeable/private: 67424K    shared: 0K
mapped: 73696K    writeable/private: 67424K    shared: 0K
mapped: 73696K    writeable/private: 67424K    shared: 0K
mapped: 73696K    writeable/private: 67424K    shared: 0K
mapped: 73696K    writeable/private: 67424K    shared: 0K

хм....

ivlad ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.