Архитектура ИТ-системы на базе 1С в крупной организации. Часть 2. Чудес не бывает

72 Comments

  1. Alien_job

    Спасибо за статью! Очень интересно читать такие выдуманные истории с полезными техническими подробностями, а не ту воду которая заливает этот сайт из окон одной графоманской компании.

    Reply
  2. Evil Beaver
    молния — это не гнев Зевса

    Ну начинается… Вы еще скажите, что 1С лучше САПа 🙂

    Reply
  3. morohon

    Очень интересно, спасибо за выдуманные истории!

    Reply
  4. pbabincev

    Такие интересные выдуманные истории и вредные советы)

    Reply
  5. Dzenn

    (2) а что, 1С хуже САПа, по твоему? Ты откуда такой динозавр выкопался?

    Reply
  6. FesenkoA

    Расскажите больше о примерах «неожиданной» оптимизации. Таких как в 1 примере: всегда считал что конкатенация строк быстрее процедур платформы. Разрабатываю системы на 10-20 пользователей, проблема производительности стоит только в «узких местах», хотелось бы изучить чужой опыт подводных камней 1С.

    Reply
  7. nicxxx

    (6) Почитайте про конкатенацию здесь и удивитесь. https://helpf.pro/faq8/view/1519.html

    Reply
  8. kauksi

    (6) вам на курс Гилева по оптимизации для программистов

    Reply
  9. Inkasor

    (6)эээ, што?

    Правило производительности №1 — платформенный метод всегда быстрей, чем код на языке 1С. Если вдруг медленней, значит вы используете не ту комбинацию платформенных методов для решения задачи.

    Reply
  10. CSiER

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

    Reply
  11. Evil Beaver

    (5) Не помню, чтобы пил с Вами брудершафта, коллега, ну да Бог с ним…. перечитайте мой комментарий еще раз, особенно вводную цитату про Зевса. Может быть, Ваш вопрос снимется сам собой.

    Reply
  12. Evil Beaver

    (7) выучите С++ и больше никогда не будете удивляться медленной конкатенации )))

    Ну или прочитайте классику от Джоэла http://russian.joelonsoftware.com/Articles/BacktoBasics.html

    Reply
  13. FesenkoA

    (8) пока нет производственной необходимости, но чувствую что все же скоро придется..

    Reply
  14. FesenkoA

    (9) не всегда все же. Те же сортировки можно организовать быстрее чем Сортитровать(«поле»)

    Reply
  15. genayo

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

    Reply
  16. Gilev.Vyacheslav

    Основная проблема всех крупных компаний — впадения в крайности по консолидации и уплотнению всего и вся мол так дешевле обслуживать

    тоже самое касается таких поделок как ERP, я удивлен что 1С одной конфигурацией не попытались консолидировать вообще любое предприятие

    Reply
  17. nicxxx

    (12) прикольно:)

    Reply
  18. PerlAmutor

    (0)

    задание уходило в пустой бесконечный цикл

    Было такое. Решил достаточно просто. Запустил конфигуратор, подключился к заданию отладчиком, нажал остановить. Прогнал код пару циклов и все стало понятно.

    Причина – дефект в движке, исправлено в 8.3.12. Справедливости ради скажу, что воспроизводится данный дефект по моей информации только у нас.

    Вас обманули. Мы с этим дефектом живем уже пару лет.

    Делаем дамп процесса, отправляем в 1С – результат – система не может определить принтер по умолчанию. Проблема в драйвере принтера, попробуйте его переустановить.

    А вот эта штука достаточно коварная. Частенько сталкиваемся с тем, что кто-то формирует печатную форму на одном компьютере, а потом переходит на другой и пытается сделать тоже самое там. Но настройки печати сохранены, в том числе и принтер по умолчанию и платформа падает/глючит, что угодно.

    Спасибо за статью. Было бы интересно почитать еще с примерами анализа технологического журнала.

    Reply
  19. Repich

    (15)

    Те, которые признаны дефектами — 100%, другое дело что от момента фиксации дефекта до его исправления может пройти год и более.

    Reply
  20. AlexGroovy

    (11)Андрей,мне очень нравятся ваши статьи на Инфостарте,но вот смысла этого выражения «Вы еще скажите, что 1С лучше САПа»- я не понял.

    Reply
  21. genayo

    (19) А сколько процентов из тех, что вами определены как дефекты, признаны как дефекты вендором?

    Reply
  22. Evil Beaver

    (20) пояснять шутки неблагодарное занятие, но попробую, раз уж вас двое….

    Итак, автор утверждает, что «молния — это не гнев Зевса, а электрический разряд». Я с ним якобы не соглашаюсь и говорю что молния — это все же гнев Зевса, а САП — лучше чем 1С. Оба утверждения одинаково достоверны с «моей» точки зрения.

    Reply
  23. genayo

    (22) Смайлов не было — не шутка. Такая молодежь пошла :)))

    Reply
  24. AlexGroovy

    (23)Смайлик есть,я просто никогда не смеялся над английским юмором.

    Reply
  25. genayo

    (25) Тогда непонятно — ну не поняли вы шутки, но поняли, что это шутка, зачем тогда её объяснить просите?

    Reply
  26. AlexGroovy

    (26)Я вообще не понял ,что это шутка .Я в этом просто увидел сарказм ,что SAP лучше 1С,но никаких аргументов к этому нету.Я хотел получить аргументы ,почему SAP лучше 1С,потому что для меня- это новость.

    Reply
  27. genayo

    (27) Вы понимаете, надеюсь, что вопрос хуже/лучше не имеет смысла, если не определены критерии для сравнения?

    Reply
  28. AlexGroovy

    (28)Согласен,что нужны критерии сравнения,но можно и дать более менее правильную «общую» оценку в совокупности критериев.

    Reply
  29. Evil Beaver

    (24) Блин.. ну наоборот же!

    Reply
  30. Kamikadze

    Зависающие rphost-ы.

    В нас решили проблему отключением журнала регистрации. При объемах больше 18 ГБт записали отдельные хосты

    Reply
  31. Repich

    (21)

    Мы умеем быть настойчивыми.

    Reply
  32. Gureev

    (10) А можно привести цитату для тех, у кого нет второго издания. В первом нет страницы 248.

    Reply
  33. ansh15
    Выводы, которые мы сделали после той аварии:

    Запас мощности системы должен быть минимум 50%, лучше 100%, то есть система должна спокойно переживать двукратный рост нагрузки. Если какие-либо показатели превышают 50% от максимального значения – начинайте нервничать.

    Вопрос к автору публикации: руководство также прониклось этой мыслью и выделило достаточное финансирование на реализацию этой идеи? Или…?

    Reply
  34. Sergey.Noskov
    Запас мощности системы должен быть минимум 50%, лучше 100%, то есть система должна спокойно переживать двукратный рост нагрузки.

    у нас схожая проф.деформация)) «Вы либо УЖЕ параноик, либо ЕЩЁ не параноик»

    Reply
  35. Repich

    (34)

    С этим проблем нет, если ты способен доказать, что так надо — деньги дадут. Сейчас у нас 6 app серверов со средней нагрузкой по ЦПУ где то на уровне 30%.

    Reply
  36. Repich

    (31)

    У нас он только ошибки регистрирует. Всё собираюсь сделать по человечески, подключив ElasticSearch, руки не доходят.

    Reply
  37. Repich

    (16) А почему ты считаешь это проблемой? По сравнению с РТК данный проект я считаю гораздо более успешным и интересным.

    Reply
  38. Repich

    (35)

    Тут еще фишка в том, что 25-30 декабря мы реально испытываем двукратный рост нагрузки, поэтому к новогоднему периоду готовимся особенно тщательно.

    Reply
  39. ivanov660

    (35) Режет уши фраза про запас системы в 100%. Это как? Некоторые гуру говорят, что начинать переживать стоит в тот момент, когда average CPU load превысит 70-80% иначе это недоиспользованные мощности и лишние расходы.

    Надо мониторить за изменением нагрузки и ждать момента «беспокойства». А вот наличие аномалий, к примеру, внезапного серьезного падения производительности стоит исследовать незамедлительно с установкой сигнализации на такие ситуации.

    Reply
  40. Repich

    (40)

    Это означает что повышение нагрузки в 2 раза (на 100%) не приводит к остановке системы в связи с нехваткой ресурсов.

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

    Reply
  41. CSiER

    (33)

    А можно привести цитату

    в книге описывается пример конкатенации трех строк: рез = строка1 + строка2 + строка3 — при этом будет выделено 5 областей памяти (4 под переменные и одна для промежуточного значения строка1+строка2). Причина — строка является немутабельным объектом, который не может быть изменён на уровне платформы. Далее цитата с выводом:

    Особенно явный негативный эффект такого поведения заметен при конкатенации больших строк – например, при формировании по частям текста длинных запросов в коде прикладных решений. Кроме большого объема занимаемой памяти возможны замедления, связанные с выделением (аллоцированием) областей памяти для помещения копий объектов. При интенсивном ее использовании память сильно фрагментирована, и на выделение памяти под большой объект может тратиться достаточно ощутимое время.

    Про СтрСоединить:

    В актуальных версиях платформы для сложения строк рекомендуется использовать метод СтрСоединить(), принимающий в качестве входного параметра массив складываемых строк. Данный метод оптимизирован в части использования памяти. Но при его использовании нужно учитывать, что для маленьких строк накладные расходы на создание исходного массива могут превысить эффект от самого оптимизированного сложения строк.

    Про выделение памяти:

    Строка

    ■ Размер – 40 байт для x86 и 64 байта для x64.

    ■ Может хранить короткие строки внутри себя (до 9 символов).

    ■ Для длинных строк используется дополнительная память размером 2*N символов.
    Reply
  42. genayo

    (41) Кстати, для минимизации затрат на избыточные мощности, обычно используются облака, Амазон и им подобные. Но, в свете последних событий, для России это не вариант…

    Reply
  43. ivanov660

    (41) зависит от стоимости этих ресурсов, а рост нагрузки в два раза просто так не случается.

    Reply
  44. buganov

    (22) надо было табличку сарказм прикрепить

    Reply
  45. besica

    Зависающие rphost:

    Справедливости ради скажу, что воспроизводится данный дефект по моей информации только у нас.

    +1, причем только на проде, на тестовых повторить не получилось. В итоге мы то откатились на платформу на которой все еще было хорошо.

    Reply
  46. Evil Beaver
    Любую (!!!) проблему с зависаниями можно решить с помощью технологического журнала.

    Поделитесь примером — в каком именно направлении вы смотрите, выявляя проблемные/зависшие сеансы?

    Reply
  47. pm74

    (45) слово «sarcasm» нечеткое , нужно по русски , Arial 40 , жирный шрифт

    Reply
  48. Repich

    (48)

    В ТЗ не было указано таких подробностей, разработчик сделал на свое усмотрение, если не устраивает — заводите новую задачу, плановая дата выхода задачи в продуктив — октябрь 2018 г.

    Reply
  49. pm74

    (49) 🙂

    Reply
  50. mbreaker

    (24) Решить вопрос поможет опрос:

    Что лучше?

    1) Грейпфрут

    2) Мандарин

    3) Сэр Элтон Джон

    4) Спагетти №7

    5) Windows 10

    Варианты ответов присылайте по адресу whocares@holywars.com

    P.S. )))

    P.P.S. sarcasm )))

    P.P.P.S. любые совпадения с реальными объектами случайны!!!

    Reply
  51. zarucheisky

    Молодец, Олежек 🙂

    Токмо вот с архитектурой скуля можно было поиграться да и… с серверами желтыми тож.

    Reply
  52. Patrio_O_Muerte

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

    Reply
  53. Gilev.Vyacheslav

    (38) потому что упрощение для админов по целентрирозованному бэкапированию например оборачивается сильным взаимным давлением разных базы,

    если влияние двух или трех баз друг на друга еще как можно разобрать, то 50 разнородных баз с разнородной нагрузкой, а значит противоречивыми требованиями к дискам превращают всё в цирк

    все умные, у всех попа прикрыта, только не работает и компания начинает нести убытки

    у неискушенных руководителей шансов разобраться мало в том, откуда ноги растут, так как ошибка хоть и не слишком глубоко зарыта, но взять на себя ответственность учить подчиненных как организовывать ресурсоизолированность рискованно и вероятность сабатажа it-шниками такой инициативы 146%…

    Reply
  54. Repich

    (55)

    Слава, честно — не понял о чём ты.

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

    Reply
  55. Gilev.Vyacheslav

    (56) да это не важно, из каких соображений вы решили консолидировать в одну базу 7000 пользователей

    важно что можно было ли сделать по-другому и был бы другой вариант лучше

    у вас что все пользователи используют данные всех других пользователей? нет конечно…

    Reply
  56. Repich

    (57)

    Что значит лучше? Тут же нет одномерной шкалы от -100 до +100, где -50 плохо, +36 нормально, а +90 хорошо.

    Конечно большинство пользователей не использует данные друг друга, но возможность получать данные в онлайне для 1-2 ключевых пользователей, например для сайта оправдывает…. А что собственно оправдывает то? Какие варианты еще? РИБ?

    Reply
  57. Rustig

    (0) что из статьи можно взять и применить?!

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

    в чем смысл иметь 7000 клиентов, и не иметь в штате крутого 1с-ника — который в отладке решит все вопросы с зависаниями и пиковыми нагрузками из-за кривого кода?

    (15) вряд ли 1С примет к сведению такого рода ошибки — капля в море.

    Reply
  58. Rustig

    (16) мысль не раскрыта

    Reply
  59. Rustig

    (57) два плюса!

    Reply
  60. Rustig

    (18) ну вот, наконец-то — взгляд на проблемы программиста 1С.

    Reply
  61. Rustig

    (39) в чем прикол 25-30 декабря испытывать колоссальную нагрузку, и не поменять до сих пор бизнес-процесс — 25-30 декабря — это пик продаж, то есть у вас кучка розничных магазинов…. так выделите отдельные базы только для розницы, а на январских праздниках перекинете сведения о продажах в основную базу.

    Reply
  62. genayo

    (59) В теории как раз ошибки от таких клиентов, с КОРП лицензиями и большими нагрузками, 1С должна принимать и исправлять в первую очередь. На практике, видимо, все равно приходится затрачивать на это значительные усилия.

    Reply
  63. Gilev.Vyacheslav

    (58) если бы вы писали фейсбук на 1С, то вы бы тоже все загнали в одну базу

    а надо делать систему горизонтально масштабируемой, чтобы новые пользователи спокойно бы усаживались на дополнительный сервер

    что делать — это уже следующий вопрос

    у нас — 14 000 пользователей, мы делаем микросервисы, каждую функцию в отдельную базу закидываем, при этом это не лучший вариант

    еще более правильней людей сажать в разные базы исходя из пересекаемости данных

    можно делить не по функциям, а по ролям пользователей «модули»

    к сожалению в 1С нельзя динамически добавлять таблицы (да еще бы хорошо не в одну базу данных), это главная проблема масштабируемости 1С

    но я тут в двух словах быстро большую и сложную тему не смогу изложить

    Reply
  64. Gilev.Vyacheslav

    (60) можно объяснить всё, но не всем )))

    Reply
  65. Repich

    (65)

    Как раз последний год, когда мы выросли с 3500 до 7000 пользователей (это был внеплановый рост, мы под него не закладывались) показал, что с горизонтальным ростом как раз всё хорошо, добавили app-сервера, вынесли регламенты на отдельный сервер, вот пожалуй всё, что потребовалось. А, ну и лицензии купили.

    Reply
  66. Repich

    (63)

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

    В 2017 подготовились к ней, но стрельнуло в другом месте.

    В итоге сейчас ставим нагрузочный стенд на 8 тысяч пользователей, но это достаточно трудозатратный процесс.

    Reply
  67. Mantis

    Ерунда какая то….

    Reply
  68. Gilev.Vyacheslav

    (67) ага, и базу данных размазали по серверам )))

    Reply
  69. chng

    >… ищите одиннадцатого.

    Никто не оценил.

    Reply
  70. strange2007

    (12) C++ это жуткие тормоза. Асм рулит и никак иначе!

    (ухахахахахах)

    Reply
  71. teembox

    Спасибо. Статья норм, опыт пригодится.

    Reply
  72. brr

    (49) что-то слишком быстро, у вас задач нет?

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *