Сервер для Привета

vovap
Уже с Приветом
Posts: 12014
Joined: 05 Apr 2000 09:01
Location: Philadelphia, PA, USA

Post by vovap »

Privet wrote:Я в чудеса не очень верю. Вряд ли SQL запросы из PHP от апача отличаются от IIS. Все индикаторы показывают, что встаёт именно MySQL. Таблицы заблокированы и SQL запросы выстроились в очередь на выполнение.

А шо, получил tengiz логи?

И что это за антинаучные эксперименты с 2 WEB серверами? Никакого толкового результата так все равно не получить. Что мешает поставить на новый бокс и WEB и базу, запустить на него отдельно стоящего тестики - а потом все снести и хоть диск форматировать.
User avatar
Strannik223
Уже с Приветом
Posts: 569
Joined: 14 Dec 2003 04:06
Location: Львов->Киев->Торонто

Post by Strannik223 »

Privet wrote:Я в чудеса не очень верю. Вряд ли SQL запросы из PHP от апача отличаются от IIS. Все индикаторы показывают, что встаёт именно MySQL. Таблицы заблокированы и SQL запросы выстроились в очередь на выполнение. Apache в этом отношении изменить ничего не может. Некоторое повышение производительности за счет более быстрого старта PHP вряд ли будет особенно заметно при нагрузке.


Can it be a deadlock?
Никакой разрухи нет. (с) Проф. Преображенский.
User avatar
Privet
Администратор
Posts: 17204
Joined: 03 Jan 1999 10:01
Location: Redmond, WA

Post by Privet »

vovap, логи за тот период ничем помочь пока не могут. Сегодня я запустил лог по новой. Эксперимент с апачем практически ничего не стоит.


Сейчвс вставляю новые процессоры и бум смотреть, что получилось. Первая неприятность оказалась в том, что RAID - контроллер оказался слишком длинным. Конструкция этого ящика не позволяет вставлять платы такой дляны. Придётся пилить...

Третий диск из сервера я уже вынул и всё перекачал на два оставшихся, поэтому на самое ближайшее время никаких остановов не предвидится.
Привет.
User avatar
Privet
Администратор
Posts: 17204
Joined: 03 Jan 1999 10:01
Location: Redmond, WA

Post by Privet »

Strannik223 wrote:....
Can it be a deadlock?


Вряд ли. Deadlock никогда не рассасывается. Два процесса мёртво держат друг друга за глотку. Во всяком случае это моё понимание как программиста. Может быть, в терминах баз денных это означает иное.
На форуме же перегрузка потихоньку по мере выполнения запросов рассасывается. Это хорошо видно в администраторе.

Каких-то непонятностей здесь нет. Вопрос в том какие запросы зависают и как их оптимизировать. Тот администратор, каким я пользуюсь не позхволяет мне оперативно смотреть какие запросы вмсят. Он показывает только первые несколько символов SELECT * FROM ..." и всё. Угадать какие это запросы с определённой степенью вероятности можно. Я поленился это сделать в своё время, т.к. для меня эта информация мало что значит. Оптимизировать запросы я не умею.
Сейчас некоторая проблема ещё в том, что большинство проблем случается в моменты, когда меня нет дома. Сейчас идёт запись в лог, но его результаты мне и так хорошо известы. Много нового я не жду. Процессор перегружается MySQL. Искать надо конкретно там. Таблици и запросы не являются секретом. Определю где - выложу на сайт.
Привет.
User avatar
f_evgeny
Уже с Приветом
Posts: 10367
Joined: 12 Apr 2001 09:01
Location: Lithuania/UK

Post by f_evgeny »

Privet wrote:f_evgeny, почему именно на 80-й? Я и сейчас могу видеть распределение нагрузки. Или Вы что-то другое имели ввиду?

Я имею в виду то, что после переключения Apache на 80-й порт, основная нагрузка ляжет на него и он будет испытываться в боевых условиях, поскольку подавляющее большинство клиентов будет коннектиться через него.
Сегодняшняя конфигурация (IIS:80, Apache:1333), хороша тем, что можно спокойно проверить работоспособность. Но по настоящему оценить поможет ли Вам переезд на Apache/module можно только после того, как вся нагрузка пойдет через Apache.
Я думаю есть немаленькая вероятность того, что ресурсы съедает запуск CGI на IIS, а не хватает их базе и выглядит это так как будто затыкается именно база. Хотя ответ можгут дать только испытания в полевых условиях.
Дальше, все будет только хуже. Оптимист.
User avatar
tengiz
Уже с Приветом
Posts: 4468
Joined: 21 Sep 2000 09:01
Location: Sammamish, WA

Post by tengiz »

Privet wrote:Вряд ли. Deadlock никогда не рассасывается. Два процесса мёртво держат друг друга за глотку. Во всяком случае это моё понимание как программиста. Может быть, в терминах баз денных это означает иное. На форуме же перегрузка потихоньку по мере выполнения запросов рассасывается. Это хорошо видно в администраторе.

Это зависит от того, есть ли в MySQL автоматическое детектирование дедлоков - тут вроде у есть люди, имеющие реальный опыт работы с этим продуктом, для них это должно быть элементарным вопросом. Системы без такового обычно имеют таймаут, после чего дедлок через некоторое время разрешается сам собой. Но обычно дедлок не сопровождатется зашкалом CPU. И если же я правильно понял, что как раз именно это и имеет место быть. Тогда это может быть "convoy phenomena" - неприятное явление, хорошо известное в базах данных аж с начала 70-х и причиной которого является неаккуратное (хотя и функционально 100% правильное) программирование синхронизации доступа к очень активно используемому ресурсу. Все "главные" современные СУБД (MySQL excluded - ничего про него не знаю) этой проблемы не имеют, потому что заведомо проектируются так, чтобы её избежать.

<added>

Полез на сайт MySQL.com и нашёл, что если в качестве подсистемы хранинения и обработки транзакций использовать ещё одно финское техническо чудо - InnoDB (которое его автор лет 5 назад пытался поочерёдно продать Oracle, IBM и MS) - то MySQL действительно имет автоматическое разрешение дедлоков. Я уже много хорошего слышал про этот InnoDB, парень, который его делал видимо достаточно грамотен. Однако про конвои на их сайте нет ничего. Оно, конечно, может ровным счётом не означать, но тем не менее...

</added>

<added more>

After a little more googling...

Surely enough Heikki Tuuri - the guy who wrote the InnoDB Engine - is very well aware of the convoy problem and does know a fact or two about the internal mechanics of MS SQL Server, including the UMS - UserModeScheduler. However, аccording to the following, InnoDB doesn't appear to employ any real anti-convoy techniques, except some hard-coded threading-related limits:

http://www.distlab.dk/mysql-4.1/html/sr ... ource.html

Which makes me believe that the most popular storage engine that comes with MySQL and that is bound to be much simpler than more "advanced" InnoDB would hardly be convoy-aware at all.

</added more>
Cheers
User avatar
f_evgeny
Уже с Приветом
Posts: 10367
Joined: 12 Apr 2001 09:01
Location: Lithuania/UK

Post by f_evgeny »

Новости с фронтов?
Дальше, все будет только хуже. Оптимист.
User avatar
Privet
Администратор
Posts: 17204
Joined: 03 Jan 1999 10:01
Location: Redmond, WA

Post by Privet »

Palych wrote:
Privet wrote:Таблицы заблокированы...

Oni tochno zablokirovany, ili mysql prosto pozhiraet resursy?


Если верить winmysqladmin, то заблокированы (locked).

Я очень скромно оцениваю свои способности правильно интерпретировать информация от администратора. Любые советы где и что посмотреть принимаются.

Лог сегодня постараюсь посмотреть и выделить кризисные места.

Сервер собрал, но пока не заводится и издаёт ужсающий звук (зуммер).
Монитор в основном не заводится. Только два раза получил сообщение CMOS Error. Проверка RAM - ок. Unknown processor 2133.
В настройки войти не удалось.

Вчера скачал документацию, сегодня буду смотреть, проверять перемычки и пр.

Кто бы мне объяснил что такое unbuffered DDR и как её отличить от buffered?
Привет.
SBolgov
Уже с Приветом
Posts: 14006
Joined: 17 Jun 2003 04:41

Post by SBolgov »

Privet wrote:Кто бы мне объяснил что такое unbuffered DDR и как её отличить от buffered?

Личного опыта, к сожалению, нет, но по информации с "железячных" сайтов:

На примитивном уровне: unbuffered - это "обычная", buffered или registered - для серверов. Не все чипсеты поддерживают работу с buffered модулями. (Ваш - AMD 762 - поддерживает.)

Судя по описанию Вашей материнки на сайте производителя, она поддерживает ТОЛЬКО registered модули.

Вот что мне удалось накопать в достаточно старом FAQ по компьютерной памяти ( http://www.ixbt.com/mainboard/memgloss.html ):

    unbuffered - небуферизованный (модуль). Термин применяется к "обычным" 168-контактным DIMM, чтобы отличить их от буферизованных.

    registered - аналог понятию buffered для SDRAM DIMM

    buffered - буферизованный (модуль). Из-за высокой совокупной электрической емкости современных модулей памяти большой собственно емкости время их "зарядки" становится недопустимо большим, что приводит к потере тактов. Чтобы избежать этого, некоторые модули (как правило, 168-контактные DIMM) снабжаются специальной микросхемой (буфером), которая сохраняет поступившие данные относительно быстро, что освобождает контроллер. Буферизованные DIMM, как правило, несовместимы с небуферизованными, поэтому эти два типа DIMM имеют разное положение одного из ключей.

    key - ключ - вырез в модуле памяти, который вместе с выступом в разъеме предотвращает неправильную установку модуля. 30- и 72-контактные SIMM имели вырез в углу со стороны 1-го контакта, последний, кроме этого - вырез посередине (интересно, что японские компьютеры имели более высокий выступ посредине разъема SIMM, соответственно, "чужие" SIMM туда не устанавливались, а в обратную сторону совместимость была). У 72-контактных SO DIMM высота выреза была использована для контроля рабочего напряжения (опять же, невозможно было установить модули с рабочим напряжением 5 вольт в разъемы с напряжением 3.3 вольт, но не наоборот). Для 168-контактных DIMM было применено другое решение - ключи (и соответствующие выступы) стали смещать вдоль, что сделало невозможным установку "неправильного" модуля памяти, хотя и заметно осложнило производство. Такие DIMM имеют 2 ключа, задающие напряжение питания и буферизованность.

Отсюда можно сделать вывод, что buffered и unbuffered DIMM отличаются расположением вырезов в нижней части модуля.

Кто знает лучше - поправьте меня, пожалуйста.
Не гоните, и не гонимы будете...
SBolgov
Уже с Приветом
Posts: 14006
Joined: 17 Jun 2003 04:41

Post by SBolgov »

SBolgov wrote:Судя по описанию Вашей материнки на сайте производителя, она поддерживает ТОЛЬКО registered модули.

Ой, вру. Похоже, "обычные" она тоже поддерживает, но "обычными" нельзя набить максимальный объём - 4ГБ.

Насколько я помню, "обычные" поддерживаются, но ими нельзя заполнить все 4 слота DIMM. Если хочется заполнить все 4, то все модули памяти должны быть registered.

К сожалению, точную ссылку найти пока не могу. :pain1:
Last edited by SBolgov on 29 Apr 2004 03:49, edited 2 times in total.
Не гоните, и не гонимы будете...
SBolgov
Уже с Приветом
Posts: 14006
Joined: 17 Jun 2003 04:41

Post by SBolgov »

Вот, накопал статью о Registered DIMM. Рассказывает о SDRAM Registered DIMM и DDR SDRAM Registered DIMM. Судя по картинке - Registered DDR модули имеют один "вырез" внизу, а не два, как "обычные". И, естественно, есть различия в маркировке модулей.

См. в конце статьи последний абзац перед "Заключением":
    Общая маркировка модулей памяти DDR SDRAM Registered DIMM аналогична стандартным DDR SDRAM DIMM и предусматривает схему PCxxxxm-abcd-ef. Здесь хххx — результирующая частота функционирования модуля памяти (200/266A/266B), m — тип используемого модуля памяти (R — Registered, U - Unbuffered), a — задержка выдачи сигнала CAS# (CL — CAS# Latency) при записи в маркировке не использует десятичную точку (например, 25 — CL=2.5 нс), b — задержка между сигналами RAS# и CAS# (tRCD — RAS#-to-CAS# Delay Time), c - длительность перезаряда линии RAS# (tRP — RAS# Precharge Time), d — номер ревизии SPD, e — тип используемого базового дизайна (A, B, C, E, F, H или K) f — номер используемой ревизии стандарта. Например, PC200R-25330-A1.
Не гоните, и не гонимы будете...
User avatar
Privet
Администратор
Posts: 17204
Joined: 03 Jan 1999 10:01
Location: Redmond, WA

Post by Privet »

Лог передан для анализу tengiz и ещё некоторым участникам. Публиковать его открыто я бы не хотел.

Первые сюрпризы (для меня) уже есть. Причина блокировки процессора - нехватка памяти. Пока я не могу сказать какой процесс (процессы) забирают памаять. Вполне возможно, что версия f_evgeny верна.
Привет.
User avatar
Privet
Администратор
Posts: 17204
Joined: 03 Jan 1999 10:01
Location: Redmond, WA

Post by Privet »

На памяти написано:


Наклейки:

Code: Select all

A4303293 MEMORY, DDR333
512MB                              2201
8N:X005202146         5000004332



Code: Select all

64X64      64X64dBOc8nAVA333
DDR333  12210010033031504ds


Чип:

AVANT
S80064YMTW - GX

Что бы это значило?
Привет.
User avatar
Privet
Администратор
Posts: 17204
Joined: 03 Jan 1999 10:01
Location: Redmond, WA

Post by Privet »

Я допускал несколько грубых ошибок в интерпретации счетчиков. Главный показатель памати я смотрел - comitted memory, что никогда не превышало критических значений. На самом деле оказалось, что Available memory в некоторых случаях близко к нулю.

Тем не менее считать, что проблема решена слишком рано. Я бы попросил высказаться профи.
Расход памяти нарастает очень быстро. Установка дополнительных модулей мало, что даст, да и некуда их ставить. Основной сервер имеет всего два слота, которые уже заняты (2х512).
Надо искать причину такого лавинообразного роста потребной памяти. Я запустил лог опять и дополнил счетчики Working Set на все процессы, чтобы посмотреть какие процессы требуют память.
tengiz, одобрямс?
Привет.
User avatar
Волчара
Уже с Приветом
Posts: 6094
Joined: 08 Sep 2001 09:01
Location: Canada -> NJ -> Canada -> ... MD/DC ... IL

Post by Волчара »

я и так могу сказать. Это апач 1.3 и его prefork model, когда запускается один child на каждые 10-100 запросов. Каждый чайлд кушает нехреново памяти

На винде апач надо скомпилировать с mpm_winnt, должно помочь. Только надо сначала проверить совместимость этого модуля с php

Для начала можно немного поиграться с конфигом prefork модуля, тоже поможет

А может на винде mpm стандартно идет... я никогда не читал подробно. В общем смотреть конфиг этих модулей
Well, show me the way To the next whisky bar. Oh, don't ask why

Return to “Вопросы и новости IT”