понедельник, 4 июня 2012 г.

Bitrix на windows и linux

Есть у нас один клиент, крупная какая-то компания московская, вся насквозь на продуктах майкрософт. Везде у них винда, даже на серверах, почта и всё остальное в эксчендже, ну и так далее. Решили они себе завести корпоративный портал. Но шарепоинт майкрософтовский их по цене не устроил, видимо, и они решили себе прикупить корпоративный портал на битриксе. Ведь битрикс же работает на mssql (по уверениям менеджеров битрикса). Ни про какие линуксы, апачи и прочее они даже и слышать не хотели. Ну как же, крупная компания, лицензии куплены, пользоваться свободным ПО как-то не comme il faut. Только виндоус сервер, mssql и IIS.

Сервер у них мощный под это дело. Дохренища гигабайт оперативной памяти, куча процессорных ядер. Портал на битриксе должен летать! Ан нет, не летает.

Там внутри, в админке битрикса, есть так называемая «панель производительности», где быстродействие портала оценивается в каких-то непонятных попугаях, число которых равно числу, обратному среднему времени открытия страницы в секундах. Сравнивается это число с неким эталоном, который, якобы, не взят с потолка, а именно такое число попугаев выдавала одна из редакций битрикса (не корппортал) на слабенькой виртуалке под линуксом несколько лет назад. С тех пор код битрикса оброс подробностями, но эталонное число попугаев осталось прежним. И до этого эталонного числа корппортал, установленный на большой хороший сервер, не дотягивал. Ладно бы слегка не дотягивал, а раза в три медленнее был.

Причин тут несколько. Во-первых, файловая система. NTFS очень слабо годится для хранения огромной кучи мелких файлов с частым к ним доступом, а битрикс именно такую кучу из себя и представляет. Во-вторых, хорошего акселератора под связку PHP+IIS не найти. Есть один более-менее, называется wincache, но на самом деле тоже полное говно. В-третьих, база данных. Битрикс может прицепляться к mssql либо через нативные драйвера для php, либо через ODBC. ODBC — это лишняя программная прослойка между пхп и базой, быстродействия не прибавляет. А с нативными драйверами ситуация очень странная. Если подключиться через них, то начинают вылезать странные ошибки запросов, которых не было при работе через ODBC, фактически, портал становится неработоспособен. В техподдержке битрикса ничего вразумительного по этому поводу не говорят.

Ну и ещё один момент. У заказчиков очень много событий и задач в эксчендже, и битрикс при синхронизации вешает всю БД. То есть пока он там не просрётся, ни один запрос выполнить нельзя. А так как событий очень много, то он может там ковыряться очень долго, чуть ли не несколько часов — приходится перезапускать IIS, чтоб он отвис. Почему лочатся вообще все таблицы, я не знаю, то ли это битрикс их лочит, то ли mssql сам.

Последней каплей была настройка WebDAV. Это технология, работающая только в IE, позволяющая работать с файлами, лежащими в папке на сайте с доступом по http, как с файлами на своём жёстком диске, даже в качестве сетевого диска, вроде бы, эту папку подключать можно. Чтоб оно заработало, надо там в IIS что-то подкрутить, а что — хрен знает. Ну я говорю менеджеру проектов, что я не знаю, что там надо включить, пусть администраторы заказчика сами настроят. У них явно должен быть опыт работы с IIS больше, чем у меня. Выяснилось, что администраторы заказчика тоже не умеют настраивать IIS, как и я. Пришлось мне этим заниматься, оказалось — всё просто. Надо просто не ссать пользоваться гуглом.

Мы постоянно предлагали поставить портал на линуксе, чтоб хотя бы сравнить быстродействие. Заказчик наконец-то согласился и предоставил ещё один сервер и удалённый к нему доступ. Мы там быстренько развернули LAMP, поставили портал, перенесли часть данных с mssql в mysql, поставили для хорошей жизни ещё memcached и APC, настроили их, и оп — портал работает, а панель быстродействия показывает даже не в два раза больше попугаев, чем на виндовом варианте, а на порядок больше. Ну и когда пошла синхронизация задач с эксченджем, то портал не вешал систему намертво на несколько часов. Он с трудом ворочался, но страницы открывались. Через 1-2 минуты просирался и снова начинал быстро работать.

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

Заметьте, я никого ещё не назвал в этом посте криворуким пидарасом, хотя стоило бы.

1 комментарий:

  1. Думаю, узким местом был MSSQL. Не замечено тормозов для связки IIS, php, mysql, wincache на тяжелых приложениях. А вот MSSQL с .Net приложением умудрялся при минимальных нагрузках основательно подвешивать сервер с 8 ядрами и 8 гб оперативы.

    ОтветитьУдалить

Ублюдочный Гугл поломал форму комментариев. Извините.