Как стать автором
Обновить

Комментарии 103

Приведите примеры высоконагруженных проектов на Битриксе. Насколько я знаю, таких не мало.
Вот часть проектов: www.1c-bitrix.ru/products/cms/performance/#tab-projects-link

Мне кажется дело не платформе, а процессе разработки и эксплуатации решения под нагрузкой. В платформе Битрикс очень много встроено средств отладки и профилирования — что существенно упрощает разработку высоконагруженных решений. Но также безусловно полезны бесплатные инструменты unix типа awk, xdebug, xhprof, pinba и отлаженный бизнес-процесс :-) с обратной связью от сисадминов к разработчикам.
Спасибо за статью! Простые, но при этом правильные решения.
Хорошая и полезная статья.
Насколько мне известно, то Битрикс сам проекты не делает под заказ, с сайта предлагаете создать сайт через партнеров. Или вы только большие проекты сами делаете по знакомству или эта статья вашего партнера или как?
Я — сотрудник 1С-Битрикс. В ходе работы мы видим множество проектов, уже запущенных, раскрученных, сделанных и на Битрикс, и на Битрикс+ZendFramework и т.п. Просто честно хочется поделиться опытом как не потерять контроль над большими проектами на PHP, неважно на какой платформе — т.к. для этого есть простые и бесплатные инструменты в unix и opensource.
>Битрикс+ZendFramework
А кто, если не секрет, на ком стоит? То есть битрикс поверх ZF или наоборот? Или от ZF только модуль отправки писем используется?
Обе системы с достаточно низкой связанностью компонентов. Стоят как бы рядом :-). Можно брать например MVC из Битрикс, а работу с БД из ZF и т.д. Битрикс вообще легко интегрируется — например я его связывал c JBoss очередями сообщений :-)
При этом формат базы данных классический для зенда или инфоблоки для битрикса? Под классическим имею в виду тупо таблицу news, в которой столбцы id, title, date, text. Просто интересен момент, что делать, если формат не инфоблоковый, а через админ-панель данные менять всё-таки нужно.
Инфоблоки хороши для быстрого старта и основных деревьев — апи работы с иерархиями из коробки. Когда данных много — миллионы, десятки миллионов, проще деревья хранить в инфоблоках, а слабые сущности в отдельных таблицах, можно и в NoSQL запихнуть.

Каталог например в инфоблоках, а ценовые предложения, если их очень много — в кастомных таблицах.
Если это кастомная таблица, можно АПИ инфоблоков битрикса к ней прицепить и отобразить в админке. Видел такое не раз в проектах. Метод есть для получения итератора: dev.1c-bitrix.ru/api_help/main/reference/cdbresult/initfromarray.php
Апи есть простое для построения админок для своих таблиц: dev.1c-bitrix.ru/api_help/main/general/admin.section/menu.php

Т.е. свои таблицы в Битрикс можно и нужно делать при необходимости. Желательно однако стараться с ними работать через CDаtabase, для улучшения отладки, трассировки, дальнейшей кластеризации — но это не жесткое ограничение.
Да, битрикс не занимается разработкой сайтов, он целиком сосредоточен на разработке системы. А разработку сайтов на битриксе делают партнеры или частные разработчики.
Но большой респект битриксу за то, что им не пофигу как потом будут работать проекты, и занимаются вопросами и возможными проблемами.
Так же битрикс очень часто ругают за «тормознутость», но очень часто виной тут не оптимально настроенная конфигурация железа, кривые конфиги, нежели система.
Если какую-то систему ругают за то, что она одни и те же задачи на том же железе с теми же настройками выполняет медленнее чем другие, то значит что-то не так либо с системой, либо с её позиционированием.
Да вот никто никогда толком не ругает конструктивно. Никто никогда на одно и то же железо не ставит идентичные системы с битриксом и сам битрикс и не делает замеры.
Так же как правило не различают, что вообще то есть различные редакции битрикса: есть простые и легковесные, а есть «монстры», которые и «тяжелее», но и задачи решают другого уровня.
Я не ругаю, битрикс не видел даже. Но как-то мне кажется (сайт его смотрел всё же на предмет использования и ушел — так я заказчикам должен останусь), что у него структура модульная, а подключать неиспользуемые для данного запроса модули как-то… не рационально. А, да, там же ООП нет, а значит autoload не при делах, а выписывать все зависимости лень что ли?
Неиспользуемые модули не подключаются.
Автолоад используется.
имхо, Битрикс хорошо подходит для обычных сайтов вроде корпоративного сайта фирмы, небольшого интернет-магазина или сайта визитки. Очень прост в управлении и можно быстро развернуть проект. Но для высоконагруженных проектов лучше заказывать написание своего движка, ибо в любом случае он будет быстрее, так как заточится под конкретные нужды.
Риски большие при написании собственного движка… Битрикс изнутри напоминает unix — набор простых и неубиваемых концепций, никаких извращенных десятиэтажных объектных конструкций, доступным избранным умам. Поэтому простой или сложный проект делается на Битриксе — неважно, куда не ткни, система раскладывается на простые кубики, покрытые изнутри инструментами профилирования и отладки. Лично мне спокойнее если исходники просты и в них легко разобраться, чем с красными глазами разбирать объектые простыми Symfony ;-)
Я бы не сказал что все так просто в Битриксе. Особенно радовало обильное использование глобальных переменных, что делает отладку и обнаружение зависимостей практически нереальной задачей
Если все глобальные переменные и PHP ассоциативные массивы завернуть в объекты — производительность серьезно снизится. PHP это же не C++. ZendFramework вообще над многими PHP функциями навернул трехэтажные объекты — стало красивее, но тормозит то как :-)
> Если все глобальные переменные и PHP ассоциативные массивы завернуть в объекты — производительность серьезно снизится

Да ладно? А мужики-то и не знают… В 5.4, кстати, register_globals дропнули. Битрикс это переживет? А про оптимизаторы байт-кода тоже, наверно, еще никто не рассказал? Про lazy load я даже говорить не буду, для «битрикс-программистов» это черная магия
Настоящие мужики УВАЖАЮТ разработчиков, поддерживающих и успешно развивающих систему 10 лет, а «мужики» я смотрю поначитались changelogs, оглавлений до половины в книгах GoF, философских трактатов Мартина Фаулера и море по колено :-) Вспомните еще позднее статическое связывание :-) Я видел такое количество объектно-дизориентированных проектов, написанных «мужиками», уволившимся т.к. не могут более года поддерживать свои творения, что вспоминать страшно. А поддерживать такие проекты (выплачивать алименты за безрассудство) приходится еще много и много лет :-)
Если по сути — отсутствие register_globals Битрикс прекрасно переживет.
НЛО прилетело и опубликовало эту надпись здесь
Спасибо, кэп!!! Прошу прощения, табличка «Sarcasm» в ремонте просто, затаскалась уже
НЛО прилетело и опубликовало эту надпись здесь
Прямо какой-то IT-эксгибиоционизм
Только не $_GET, а $HTTP_GET_VARS. $_GET появилась уже после 4.0.
Кстати объектная модель с подходом 1 класс — 1 файл позволяет делать очень интересные вещи, как-то сбор всех ИСПОЛЬЗУЕМЫХ классов в 1 файл, который 1 раз подключается, да ещё и в добавок кешируется APC кешем, что в итоге дает очень приличную скорость.
Не спорю, иногда объекты нужны. Но почему же никому не приходит в голову переписать linux на С++? Правильно — накладные расходы. Аналогично в движке Битрикс — лишние объекты, интерфейсы, иерархии на низком уровне ядра повредят производительности. Однако можно при необходимости ООПировать на уровне компонентов Битрикс сколько угодно, особенно при реализации сложной и медленной бизнес-логики. Хоть Message Queues юзать :-)
> Но почему же никому не приходит в голову переписать linux на С++? Правильно — накладные расходы

А почему никому не приходит в голову «переписать linux» (эту фразу я даже в книжечку запишу) на додиезе? Правильно — дебилов нету. Какие накладные расходы??? Вы о чем? Чистый Си и плюсы — это разные языки, переписывание ядра с Си на любом другом языке не даст никакого профита, даже если «накладных расходов» в принципе не будет
Разные языки? Да один вырос из другого и перетянул в себя кучу костылей и добавил кучу проблем :-) Я про инструмент подходящий — на PHP городить объектные иерархии считаю идитоизмом :-)
Мне кажется, что мы с вами в разных реальностях существуем. Ну да ладно, вопрос по существу: на каком языке «городить объектные иерархии» не есть идиотизм?
ООП это методика управления сложностью. Когда становится «сложно» без объектов — их и применяют. Возьмем Java — почти все выражено на ООП и все просто безобразно тормозит. Для банковских систем со сложной бизнес-логикой и т.п., где на функциях все запутается до неузнаваемости — объекты, интерфейсы, паттерны лично я использую. Для быстрых системных задач, движков — по минимуму. Беда случается, когда люди не понимая причин появления ООП начинают им пользоваться направо и налево… везде :-) Чувство меры приобретается с опытом… поддержки чужого г… нокода.
Каждый раз когда я вижу, чужой «г… нокод» на PHP — он, почему-то, оказывается в лучшем случае процедурным. В идеальном — с вкраплениями ООП в качестве неймспейсов/префиксов. Но с активным использованием глобальных переменных в разных файлах, и даже внутри классов — 100%.

Почему-то меня первым делом тянет выделить этот код хотя бы в функцию, а если две функции использующие одни и те же глобальные переменные, то в класс, которому они передаются в конструкторе. Слава богу, на практике глобальные переменные инициализируются всё же в одном месте и по ходу не меняются — исключение wordpress и drupal (насчёт последнего 100% не уверен, давно не работал с ним, а wordpress запомнился). Код bitrix не смотрел.
Если честно, PHP у профессиональных программистов является вторым или третьим языком. Нельзя начинать свою карьеру с PHP — развратишься :-)
> Разные языки? Да один вырос из другого и перетянул в себя кучу костылей и добавил кучу проблем

Вы вот только не говорите это больше никому, могут зашибить ненароком
А какая собственно разница если в итоге и С и С++ компилируются в оптимизированный машинный код, в котором уже нет такого понятия как ООП и т.д
Вот после этого комментария дискуссию можно закрывать, по-моему. Ни добавить, ни убавить.
А в чем дело. Чем отличается вызов обычной ф-ции от метода класса? Разве что дополнительным указателем this на стеке
> Битрикс изнутри напоминает unix

Хорошо, что Деннис Ритчи вас уже не услышит. Битрикс изнутри напоминает свалку говнокода. Как вообще можно сравнивать классическую строгость Unix-а и эту поделку инвалидов от программирования?

Статья в принципе ни о чем, если проект работает под высокой нагрузкой и простои критичны, то пользователь в принципе никогда не должен увидеть 500/502 А для этого надо принимать превентивные меры и использовать realtime-мониторинг. И оптимизировать, в первую очередь, приложение. Анализ логов хорош уже постфактум, при разборе полетов.
Надо же с чего-то начинать. Уж лучше узнать об ошибках постфактум, при регламентной проверке, чем вообще о них не узнать и только удивляться, почему народ перестаёт заходить.

Лично мне статья полезна была. Даже не столько конкретными решениями, сколько постановкой задачи. Скрипты на любом языке можно написать и это относительно просто, а вот что они должны делать сформулировать сложно для тех, кто в первый раз с подобными задачами сталкивается и толком даже не понимает, что гуглить-то. Вот вы «написали realtime мониторинг» — уже есть отправная точка. И даже ощущение, что к этому можно отнести мой скрипт на python, который по хрону каждую минуту вызывает ping -c 1 example.com, а в случае проблем (exit code >0) вызывает notify-send "Error" "Something wrong with ping of example.com"
> И даже ощущение, что к этому можно отнести мой скрипт на python, который по хрону каждую минуту вызывает ping -c 1 example.com, а в случае проблем (exit code >0) вызывает notify-send «Error» «Something wrong with ping of example.com»

Есть ощущение, что питон здесь лишний :)
Есть подозрение, что в рамки хрона это не запихнуть, нужно писать скрипт. А на чём его писать дело десятое. Но. Я могу понять скобки (хоть фигурные, хоть круглые), я могу понять отступы, я даже могу понять ключевые слова, но вот переворачивание ключевых слов мой мозг отказывается воспринимать. Я твержу себе, что FI этот то же end в Паскале (грубо говоря), но каждый раз взгляд на нём стопорится секунд на 5.

Я правильно ваш намёк понял?
Эта задача решается однострочником на баше. google:// advanced bash scripting guide
Юникс, да и С — это свалка ошибок за 30 лет и антипаттернов :-) Где вы в юниксе увидели стройность? Простота — да, а костылей — море. Сила юникса — в простоте, он понятен рядовым умам.
Мне даже ответить вам нечего. Приходите к нам на HL++, узнаете что такое действительно высокие нагрузки и как с ними работают в мире вне битрикса.
Одно дело конференции организовывать, другое — код писать и поддерживать :-)
Сперва добейся? :)))
Ну код тоже немножко умею писать, но до вас мне, конечно же, далеко. Я так, быдлокодер на убогом недоязычке
Писать и поддерживать даже я могу! А вот продавать то, что написал…
А продавать — это проблема менеджеров. Вы код хороший пишите и его по-любому купят. Далеко за примером ходить не надо, совсем недавно Сысоев очень наглядно это всем доказал.
Простите, а вы wifi уже настроили нормально?) Или опять как всегда?
А «как всегда» — это как? На последней HL к нам жалоб на wi-fi не поступало
А жалобы по вайфаю принимали?

Извините, не удержался.
Принимали конечно :) Мы все жалобы принимаем и обязательно рассматриваем
Да ладно. Сколько народ жалуется, что даже простого автомата пополнить счет мобильного нет. Файвай ваш уже притча во языцах.
Программный комитет иногда такие лулзы пропускает, например доклад про нагрузки от комсомолки, помните? Или фейл от гугловских. Да что я вам рассказываю.
Я к тому, что вроде и конференция хорошая, спасибо вам за нее, но вот вам взгляд со стороны.
Вам битрикс не нравится, не покупайте. Ребята стараются, респект им, зачем такие вещи писать в профильном блоге.
Вот автоматы, увы, не к нам :( Но мы над этим думаем.

> Программный комитет иногда такие лулзы пропускает, например доклад про нагрузки от комсомолки, помните? Или фейл от гугловских.

Помню конечно :) Но ребята из комсомолки отлично настроение подняли :)
Касательно битрикса не буду больше ничего говорить, пусть ребята стараются на здоровье… Чем бы дитя не тешилось, как говорится, лишь бы…

Большое вам спасибо за обратную связь!
На самом деле мы давно сотрудничаем с коллегами из Онтико :-). Вот например не очень давно совместно провели нагрузочное тестирование наших продуктов и получили отличные показатели производительности.

Не раз на хайлоаде встречал стенды с Битриксом под нагрузкой.

Надеюсь, что такие эксперты как Андрей активно участвовали в подготовке и проведении нагрузочных испытаний наших продуктов :-)
Дада, я в курсе, участия в тестировании не принимал :) Мне не хочется обсуждать здесь инсайдерскую информацию, претензии к качеству вашего продукта и использованию его при высоких нагрузках у меня личные, основанные на опыте использования. Приходите на РИТ++, я там буду, пообщаемся лично, если есть желание, конечно :) Обещаю слюной не брызгать и кулачком по столу не стучать :)

Ну и уж коли тон смягчили, приношу свои извинения за резкие высказывания и выход за рамки формата дискуссии. Но от слов своих не отказываюсь, все мои претензии могу обосновать. Просто я, когда слышу слово «Битрикс», становлюсь не совсем адекватен.

PS Мы проводим конференцию на новой площадке в этом году, надеюсь, что вопросов по поводу wi-fi и терминалов оплаты больше не возникнет :)
Обязательно будем на РИТ++. К конструктивной критике всегда открыты, я вообще отвечаю в компании за качество интеграции и внедрений. В последней версии мы внедрили в продукт большой и всеобъемлющий монитор (чеклист) качества, в котором есть и рекомендации по безопасности, стилям программирования и документирования, по тонкостям ООП и паттернам работы с БД, по юнит-тестированию, по организации и проведению нагрузочного тестирования, даже по повторению шаблонов Мартина Фаулера перед сном :-) Буду искренне благодарен за замечания и предложения по развитию стандартов качества архитектуры и кода в решениях на Битриксе.
Отлично, подходите, с большим удовольствием пообщаюсь с вами :) Я буду очень рад, если мой фидбэк поможет сделать битриксэтот мир чуть лучше :)
Анализ логов и проактивный мониторинг — это совсем разные вещи, не нужно их смешивать. Я написал об этом в конце статьи. Оптимизировать неясно что нужно — надо сначала понять, где проблема. Может диск смонтирован криво, а вы будете приложение тюнить.
> Может диск смонтирован криво, а вы будете приложение тюнить.

Все понятно, извините. Наряду с сомнительной чистоты термином «битрикс-разработчик» пора вводить еще и «битрикс-сисадмин».
«Битрикс-сисадмины» спроектировали и реализовали запускаемый в коммерческую эксплуатацию 12 апреля облачный интранет-сервис Битрикс24.

Особенности архитектуры:
Amazon Web Services на полную катушку
2 ДЦ
Автомасштабирование веб-кластера от нагрузки, кластера за балансировщиками
Автоматическое переключение траффика в случае аварии и при регламентных работах
Мастер-мастер репликация, Percona Server
Снепшоты файловой системы 2 раза в сутки, бинарный бэкап MySQL XtraBackup
Используем кучу промышленных сервисов амазона: S3 — для хранения данных, ELB, CloudWatch.
Более 1500 тестов в нагиос.

А чем могут похвастаться «мужики-сисадмины»? :-)

Да я и слов-то таких не знаю, куда там хвастаться? :) Разве что коммитами в OpenSource-проекты, но по сравнению с вашими достижениями это совсем мелко
> «Битрикс-сисадмины» спроектировали и реализовали запускаемый в коммерческую эксплуатацию 12 апреля облачный интранет-сервис Битрикс24.

Ну как бы ничего сверхественного нет, честно говоря. Где киллер-фичи? Вы какой-то софт крутой написали для этого? Ну так выложите в паблик!.. Или он намертво приколочен гвоздями к самому битриксу? Теже фейсбуковцы и баду отдали в коммьюнити свои xhprof, pinba и php-fpm, которыми вы активно пользуетесь, а у вас пороху не хватает? Или тупо не осилили принцип «одна задача — одна программа», который, к слову, и лежит в основе проектирования «классического» софта под юникс
А зачем сверхъестественные фичи? Клиенты, как коммерческие так и бесплатные — должны быть довольны :-) Подумаю над темой выложить наработки — пока мы делимся опытом.
> А зачем сверхъестественные фичи?

А зачем тогда такой пафос?
«Спроектировали и реализовали»
У моего друга недавно сын родился, так вот когда я захожу к ним в гости, мне примерно с теми же интонациями говорят «а наш Мишенька покакал»
Иногда можно обойти гору :-) Кто-то будет городить огород с DRBD, OCFS2, прокладывать кабели между ДЦ, говорить страшные слова типа «linux-ha» — а кто-то грамотно интегрирует готовые сервисы в проект и заставит их работать эффективно.
> кто-то грамотно интегрирует готовые сервисы в проект и заставит их работать эффективно.

Кхм… Грамотно? Пока что все, что выходит из-под ваших перьев, напоминает извращения парализованного дошкольника в notepad. В чем грамотность-то? В чем эффективность? Это как-то измерено? Графики, методики тестирования, показания очевидцев есть? Какой я получу профит, если сейчас ломанусь заказывать проект на битриксе и размещение его в облаке?
Уважаемый, вы так изощренно хамите коллегам программистам, администраторам, правда работающим в других компаниях, что начинаешь задумываться — а стоит ли отвечать на бессмысленный троллинг? :-)
Не стоит. Хамлю я только адептам битрикса.
Хамство не относится к технологиям и продуктам, это часть культуры или ее отсутствия. Чем выше профессиональный уровень, тем скромнее ведет себя человек :-)
Вы меня вычислили :( Я тролль, лжец и девственник, а Битрикс — вершина инженерной мысли. Я просто завидую, Вы уж простите убогого…
Извините, но хвастаться надо достижениями вроде «10000 хитов в минуту без двух ДЦ и AWS» вообще.
Лично моё маленькое достижение было около 1000-3000 посетителей в секунду. На средней VDS.
Забыл сказать, что ошибок 50х было 0%.
«Проактивный мониторинг» это тоже какой-то битрикс-сленг, да? У вас там вроде еще «проактивная защита» имеется и даже свои собственные попугаи для измерения производительности? Кстати, откройте мне большой секрет, что означают эти волшебные цифры, именуемые, ЕМНИП, «индексом производительности»?
Этот индекс обратно пропорционален времени выполнения пустой страницы, с подключением ядра системы.
Т.е. показывает количество хитов в секунду.
> Т.е. показывает количество хитов в секунду.

Мне это напоминает негласный девиз Java-программистов: «зачем просто, когда можно сложно?»
В двух словах — количество страниц, генерируемых ядром продукта за единицу времени.

Тут — подробно: dev.1c-bitrix.ru/community/blogs/howto/2450.php
> Эти цифры нужны для того, чтобы помочь системному администратору найти узкое место (если такое есть)

Да, термин «Битрикс-сисадмин» определенно имеет право на жизнь
>разбирать объектые простыми Symfony ;-)
Перфразируйте, пожалуйста, мозг поломал.
Сорри. «Объектные простыни Symfony».
Деньги считать пробовали? В случае нереально дикого выстрела можно и переписаться плавно, с затратами в 300%. А если нет, в любом случае железо дешевле команды с хорошим архитектором на реализацию своего магазина.
сохранять в лог $upstream_response_time — как я сам не додумался?!
Бывает что в логах PHP время генерации маленькое, а в логе апстримов nginx дикие превышения из-за недостаточного числа воркеров PHP. Две гистограммы nginx и PHP можно одновременно вывести и сравнить :-)
Супер! Очень полезная статья для разработчиков и с нетерпением будем ждать вторую часть.
Александр, а в виртуальную машину добавите средства мониторинга и диагностики — давно ведь напрашиваются?

Про nagios слышал неоднократно, но руки не доходили. Ждемс…
Лучше заббикс, он графики нативнее умеет. Но это путь к холивару.
Лучше Кактус www.cacti.net :)
Кактус мониторить не умеет:) Мне это в заббиксе и нравится, что и мониторинг, и графики.
У кактуса есть плагин Threshold, так что всё же умеет. ;)
По мне заббикс — тяжелее :-) nagios
Nagios без базы работает и историю availability строит по текстовому логу:) Ну да у Zabbix'а куча своих косяков. Нам пришлось даже платную поддержку заказывать.
Да, в виртуальную машину добавим средства оффлайн и онлайн мониторинга. Статья то на самом деле о простых вещах, о которых к сожалению постоянно забывают :-)
Для профилирования и real-time мониторинга php используем Pinba. Сразу видно, где какой скрипт тупит и почему.
Пинба отличный инструмент, но за сутки статистику не держит же. Мы тоже используем пинбу в онлайне, отлично справляется с задачами и не тормозит.
Мы ее с заббиксом подружили, было долго и тяжело, но в принципе получилось, мощно и наглядно.
А мы для нагиоса написали плагины, получающие реал-тайм выборки из пинбы — при зависаниях высылается СМСка.
А можете рассказать, как подружили? Очень любопытно.
Для nagios, если интересно, мы сделали так. Есть скрипты, выбирающие данные из pinba в целом или одному виртхосту:

#!/usr/bin/php
<?php

require_once("pinba_mysql_connect.php");

$hostname = $argv[1];

$c = mysql_connect($pinba_host, $pinba_user, $pinba_pswd);
mysql_select_db($pinba_db, $c);

if ($hostname!='%') {

$r = mysql_query("select req_time_total,req_count from report_by_hostname where hostname='${hostname}'");
$row = mysql_fetch_row($r);
$result = $row[0]/$row[1];

} else {

$r = mysql_query("select req_count,time_total from info");
$row = mysql_fetch_row($r);
$result = $row[1]/$row[0];

}

echo intval($result*1000);

?>


Или

#!/usr/bin/php
<?php

require_once("pinba_mysql_connect.php");

$hostname = $argv[1];
$precision = 0.05;
$show_threshold = 0.5;

$c = mysql_connect($pinba_host, $pinba_user, $pinba_pswd);
mysql_select_db($pinba_db, $c);

if ($hostname!='%') {
$r = mysql_query("SELECT count(*) from request where hostname ='${hostname}'");
} else {
$r = mysql_query("SELECT count(*) from request");
}

$row = mysql_fetch_row($r);
$count = $row[0];

$precision_arg = round($precision * 100, 2);

if ($hostname!='%') {

$r = mysql_query("SELECT COUNT(*) as num, ROUND(req_time/".$precision_arg.", 2) * ".$precision_arg." as req_time_zone
FROM request
WHERE hostname='".$hostname."'
GROUP BY ROUND(req_time/".$precision_arg.", 2)
ORDER BY req_time_zone ASC");
} else {

$r = mysql_query("SELECT COUNT(*) as num, ROUND(req_time/".$precision_arg.", 2) * ".$precision_arg." as req_time_zone
FROM request
GROUP BY ROUND(req_time/".$precision_arg.", 2)
ORDER BY req_time_zone ASC");

}

while($row = mysql_fetch_row($r)) {
$percent = ($row[0] / $count) * 100;
if ($percent < $show_threshold) continue;
printf("%0.2f: %-50s (%d, %0.2f%%)\n", $row[1], str_repeat("*",$percent), $row[0], $percent);
}

?>


Есть плагин nagios, дергающий эти скрипты:

#!/bin/bash

AVG_VALUE=`/var/log/cp/pinba/stat_php_avg_time.php $1`

[ -z "$AVG_VALUE" ] && exit 0

echo "$1: avg php time: $AVG_VALUE ms|"

/var/log/cp/pinba/stat_php_distr_graph.php $1

[ "${AVG_VALUE/.*}" -lt 3000 ] && exit 0

[ "${AVG_VALUE/.*}" -lt 5000 ] && exit 1

exit 2
О, спасибо большое! Надо попробовать будет.
Здравствуйте! Простите за оффтопик, но когда будет выпущена адекватная система для интеграции 1С-Битрикс: Корпоративный портал (с ЗУП имеется ввиду)?
>Видно, что большинство скриптов веб-решения потребляют 6-8 МБ памяти
Не стоит забывать, что память показываемая как используемая в PHP и реальная память которую отвел по себя рабочий процесс разные величины (порой, до 10 раз). И если судить по логам, то может сложиться ложное представление о том, что все хорошо, расход памяти небольшой, а на деле сервер давно уже ушел в своп. В общем используйте внешние системы мониторинга системы, они дают более точную картинку текущего положения вещей.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий