Переключение на Главную Страницу Страницы: 1 ... 5 6 [7]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Сервер приложений для v7 (число прочтений - 24189 )
lustin
1c++ power user
Отсутствует


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Сервер приложений для v7
Ответ #90 - 28. Октября 2011 :: 11:28
Печать  
Alex_Bob писал(а) 28. Октября 2011 :: 09:55:
Цитата:

P.S. выставил на локальной машине 3000 конектов к серверу 1С в качестве минимального размера пула, максимально подняло 174 соединения и больше не захотела Подмигивание : служба съела 1 708 784 kb памяти (Win 7 x64), после этого служба была убита самим Windows.


Это садомазохизм.  Смех  Но тем не менее даже сотня, я считаю приличный результат. А сколько же у вас лицензий? По идее каждый коннект должен отъедать одну клиентскую лицензию. Или речь о v7?


Это я так, ради эксперимента проверил - для x86 это предел составил 134 соединения.
Сразу возник вопрос как "распарралелить" COM+ приложение - на несколько рабочих процессов: хочется понять предел производительности.

А лицензий у нас в локальной сети много - 1000 наверное наберется (если не больше).

Нашел проект http://www.soapui.org/ - хочется попробовать нагрузить связку SOAP->COM+->COM->1C Сервер->SQL


  

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Donat
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 152
Зарегистрирован: 29. Мая 2006
Re: Сервер приложений для v7
Ответ #91 - 29. Октября 2011 :: 07:24
Печать  
Здравствуйте.

Цитата:
http://infostart.ru/public/93643/ Если еще актуально


Выложите пожалуйста здесь, я на инфостарте плюсанул, а скачать не могу.
Заранее спасибо!
  
Наверх
 
IP записан
 
Alex_Bob
Full Member
***
Отсутствует



Сообщений: 136
Местоположение: Липецк
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Сервер приложений для v7
Ответ #92 - 31. Октября 2011 :: 06:38
Печать  
Выкладываю и здесь v82server.dll
  

v82Server.zip ( 42 KB | Загрузки )

Необходимо время, чтобы восстановить хаос. (с) Дж. Буш (младший)
Наверх
 
IP записан
 
lustin
1c++ power user
Отсутствует


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Сервер приложений для v7
Ответ #93 - 31. Октября 2011 :: 13:57
Печать  
Вот же веселая история...

Пытался научится вызывать созданный COM+ из ASP.NET

в интернете в основном описаны методы когда сам компонент написан на C# и его можно подключить как ссылку к проекту.
Однако в нашем случае все оказывается намного веселее

метод типа
Цитата:
Type objType = Type.GetTypeFromProgID("V8Server.Connection");

object connector = Activator.CreateInstance(objType);

object[] args = { };

objType.InvokeMember("UserName", BindingFlags.InvokeMethod,null, connector, null);

не взлетает.
в переменную приезжает objType = null, по неизвестной мне причине - как зарегистрировать ProgID

попробовал взяться с другого конца

Цитата:
Guid comPlusCLID = new Guid("691427AE-51B1-4DD1-9EC8-878087F3530E");
Type objType = Type.GetTypeFromCLSID(comPlusCLID);

object connector = Activator.CreateInstance(objType);


Код
Выбрать все
System.UnauthorizedAccessException: Сбой при получении производства объектов класса COM для компонента с CLSID {691427AE-51B1-4DD1-9EC8-878087F3530E} в результате следующей ошибки: 80070005.
 



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

---

и только после этого стало ясно - что необходимо настроить DCOM с точки зрения безопасности от ASP.NET

Использовалась вот эта статья вот эта статья

уф. и теперь хотя бы удалось запустить

Код
Выбрать все
[WebMethod]
        public string HelloWorld()
        {
            Guid comPlusCLID = new Guid("691427AE-51B1-4DD1-9EC8-878087F3530E");
            Type objType = Type.GetTypeFromCLSID(comPlusCLID);

            object connector = Activator.CreateInstance(objType);
            
            object[] args = { };

            string helloWorldString = (string)Invoke(connector, "ИмяПользователя", args, objType) + (string)Invoke(connector, "СтрокаСоединенияИнформационнойБазы", args, objType);
            return helloWorldString;

        }

        private object Invoke(object connector, string methodName, object[] args, Type objType)
        {
            return objType.InvokeMember(methodName, BindingFlags.InvokeMethod, null, connector, args);
                
        
        }
 



Возможно есть более красивый способ подключения COM+ к ASP.NET проекту - но мне он пока неизвестен

B самое главное - пул выставлен от 10 до 120 объектов: в активных пользователях вижу 10 активных соединений

Если вызвать Web сервис ASP 11 раз v8server создаст 11-ое соединение с 1С и даже хотя вызовов больше не происходит НЕ будет очищать пул соединений - видимо я что-то "не умею готовить"




  

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
lustin
1c++ power user
Отсутствует


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Сервер приложений для v7
Ответ #94 - 31. Октября 2011 :: 19:26
Печать  
ну вообщем итог экспериментов

тестировалась связка

разработческий компьютер (HP Pavilion Elite HPE-400 Core i7 2.93 RAM 8Gb)
0. soapUI - проверка нагрузки Web службы
1. IIS (ASP.Net Web Service) - SOAP
2. COM+ Component v8Server - размер пула от 10 до 100 объектов

тестовый сервер 1С 8.2.13.219
чего то там внутри "блэйда" - на нем обычно тестируются базы от 100 GB, так что что-то производительное

тестовый сервер MSSQL 2008R2
чего-то тоже внутри блэйда но с довольно вменяемой дисковой - тестируются обычно время выполнения реструктуризации и вообще регламентных работ


---

тестировались два метода тестовой Web службы

1. string HelloWorld - вызывались два метода 1С ИмяПользователя() и СтрокаСоединенияИнформационнойБазы()

2. int RemainGood(int code) - вызов метода общего модуля 1С (найти номенклатуру по коду, получить количество Не нулевых остатков серийных номеров) - количество движений в регистре 333000000 записей, количество итогов 7000000 записей в таблицах SQL.

замеры производились по сценариям. перед выполнение каждого сценария машина перезагружалась и службы IIS, COM+ и 1С перезапускались - temp файлы очищались

simple (простой режим)
время выполнения сценария 600 секунд
количество одновременных потоков 120
задержка работы потока - <случайное число от 1 до 100 миллисекунд>

thread (потоковый режим)
время выполнения сценария 600 секунд
количество одновременных потоков от 10 до 120 с пропорциональным шагом
задержка при вызове не происходит - все потоки выполняются одновременно

burst (тестирование взрывом)
время выполнения сценария 600 секунд
количество одновременных потоков 120
задержка при вызове не происходит - все потоки выполняются одновременно
длина шага запуска всех 120 потоков - 60 секунд (старт работы всех потоков)
длина шага задержки - 30 секунд (стоп работе всех потоков)

результаты:
имя сценария helloWorld RemainGood
simple max 1400ms, avg 19ms, min 3ms, err 0, count 1079000 max 4409ms, avg 223ms, min 123ms, err 0, count 89078
thread max 1540ms, avg 34ms, min 12ms, err 0, count 1241798 max 3400ms, avg 256ms, min 146ms, err 0, count 234987
burst max 1745ms, avg 43ms, min 14ms, err 0, count 946336 max 4907ms, avg 381ms, min 201ms, err 0, count 102569

разъяснение:
max - максимальное время вызова
avg - среднее время вызова
min - минимальное время вызова
err - количество ошибок
count - общее количество вызовов за время сценария

до сих пор не понимаю как система понимает что один из объектов пула освободился для выполнения другим клиентским вызовом
во всех тестовых сценариях COM+ приложение создавало от 83 до 92 COM соединений к 1С - до предела в 100 так и не добрался (на досуге попытаюсь выбраться к пределу и посмотреть кто упадет в таком случае)

P.S. в коде выше чтобы не было зависших объектов приходится принудительно делать connector =null
P.S.S. А ниче так жизнеспособная схемка получилась  Со сжатыми губами - 1C-ный то Web сервис при 50 потоках ниже секунды не показывал
P.S.S.S. И еще - никакого тонкого тюнинга на стороне IIS и COM+ пока не производилось, данный результаты получены в рамках штатных установок

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

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 5 6 [7] 
ОтправитьПечать