Skocz do zawartości

Długie łączenie z systemem zewnętrznej sprzedaży

Polecane posty

Dzień dobry. :)

 

Problem:

Długie łączenie z systemem zewnętrznej sprzedaży podczas tworzenia dokumentów końcowych.

 

Sprzęt:

Dyski: SSD w RAID 1

RAM: 12 GB

CPU: Xenon W3565 ~3.2GHz

 

Sello:  1.22.0 i 1.22.1

Subiekt: 1.4702.10.3831 i 1.4703.20.3844

 

SQL: 2016 Express

 

Testowane również na sprzęcie:

SQL Standard 2016

Intel Skyline i5-6500

Dysk SSD

 

Szczegóły:

W każdej konfiguracji, sello zachowuje się tak samo podczas tworzenia dokumentów końcowych w transakcjach.

Myśleliśmy, że to wina ciągle rosnącej bazy (Obecnie Sello: 6GB, subiekt 2GB), jednakże problem występuje również na czysto postawionych bazach. (Z jednym produktem)

Zanim nastąpi utworzenie dokumentu końcowego, trzeba czekać około 5-15 sekund, co jest bardzo uciążliwe biorąc pod uwagę ilość transakcji. Oczywiście moglibyśmy tworzyć dokumenty grupowo, ale pewne czynniki wpływają na to, że niektóre transakcje trzeba tworzyć pojedynczo.

Próbowaliśmy również z włączonym subiektem, ponieważ typowaliśmy, czas włączenia programu(?) niestety to również, bez znaczenia.

Analizując obciążenie dysku, jest ono praktycznie znikome w momencie tworzenia dokumentu.

Czy nie macie tam w kodzie czasem sleep(5); ? ;)

 

 

 

Bardzo prosimy o pomoc w rozwiązaniu tego problemu.

Z góry dzięki :)

Pozdrawiam serdecznie.

 

PS:

W której wersji Sello w końcu można się będzie spodziewać złotej aktualizacji, zmieniającej storage zdjęć na filesystem?  

 

 

Schowek01.jpg.c2f480b94d68b755e921ee1a35eeff44.jpg

Link to postu

Z jakim Subiektem spięte jest Sello?

 

Sleep(10) kiedyś jeden z programistów dodał, ale w innym miejscu w kodzie i już tego nie ma :)

 

Póki co jest dużo ważnych innych aktualizacji więc aktualnie trudno mi powiedzieć kiedy dodamy obsługę filestream dla zdjęć. Mamy to jednak na uwadze.

Link to postu

Z jakim Subiektem spięte jest Sello?

 

Subiekt GT.

 

 

Sleep(10) kiedyś jeden z programistów dodał, ale w innym miejscu w kodzie i już tego nie ma :)

It's something ^^

 

Póki co jest dużo ważnych innych aktualizacji więc aktualnie trudno mi powiedzieć kiedy dodamy obsługę filestream dla zdjęć. Mamy to jednak na uwadze.

Trzymam za słowo ;)

 

Link to postu

Nie, dodanie indeksu nic nie pomogło.

Zresztą, dokładnie opisałem wyżej problem. Nałożenie indeksu nie ma żadnego znaczenia, ponieważ ten sam problem występuje zarówno na pełnej bazie jak i na czystej z jednym produktem.

 

Komputery klienckie pracują na os W10, maszyny nie są słabe. "Zapchana sieć" - to też raczej odpada ;)

 

Nie mam dostępu do waszego kodu, ale proszę zobaczyć na miejsce w którym wołacie subiekta do tworzenia dokumentów końcowych, tam może być wąskie gardło.

 

ewentualnie podaj proszę konfigurację środowiska na którym "sprawdziłeś" i chodzi to dobrze, może wina OS?

 

a może przepiszemy na Linuxa? :>

Link to postu
Nie mam dostępu do waszego kodu, ale proszę zobaczyć na miejsce w którym wołacie subiekta do tworzenia dokumentów końcowych, tam może być wąskie gardło

Ach ci programiści, każdy kod by napisali lepiej ;) - piszę z własnego doświadczenia :).

Z tego kodu codziennie korzystają tysiące użytkowników na różnych systemach, od XP, przez Windows serwery, Vistę, 7,8,8.1 i 10 włącznie :) i można by powiedzieć, że sprawdzone jest na niemal każdym systemie i w każdej konfiguracji.

 

Proszę sprawdzić menedżer zadań, czy po uruchomieniu tworzenia dokumentu pojawia się proces Subiekt.exe i po jakim czasie? Jak wygląda jego użycie procesora?

Spróbowałbym również wykluczyć problem z drukarką fiskalną/zwykłą.

 

Rozumiem, że po postawieniu nowej bazy Subiekta i Sello nie było w nich żadnych zmian dokonywanych (w parametrach obu programów itp)?

Czy było coś co łączyło inną konfigurację, na której odbywał się test z poprzednią? Np. ta sama sieć, serwer baz, to samo oprogramowanie antywirusowe zainstalowane? Sieć nie musi być zapchana, żeby źle działała - może być uszkodzona karta sieciowa, ruter, kabel.

 

Jak umieszczone są bazy obu programów? Jest jakiś serwer? Czy na lokalnie uruchomionym Sello i Subiekcie problem również występuje? Czy przy synchronizacji towarów również występuje jakieś zauważalne spowolnienie?

Link to postu

Ach ci programiści, każdy kod by napisali lepiej ;) - piszę z własnego doświadczenia :).

Nigdzie nie napisałem, że napisałbym go lepiej.

Nie przyszliśmy tu pisać o własnym doświadczeniu, swoje też mam.;)

... Dobra, czas to spróbować rozwiązać, dyskusje można kiedyś na IRC przeprowadzić.

 

 

Proszę sprawdzić menedżer zadań, czy po uruchomieniu tworzenia dokumentu pojawia się proces Subiekt.exe i po jakim czasie? Jak wygląda jego użycie procesora?

Spróbowałbym również wykluczyć problem z drukarką fiskalną/zwykłą.

 

Czas do pojawienia się procesu: 4s.

Użyta pamięć: 59 MB

Obciążenie: 0,1%

 

Tak samo się zachowuje przy odpalonym procesie subiekta, wciąż trzeba czekać te 4s na pojawienie się okienka z paragonem imiennym. 

 

Rozumiem, że po postawieniu nowej bazy Subiekta i Sello nie było w nich żadnych zmian dokonywanych (w parametrach obu programów itp)?

Nowy podmiot został wypełniony przykładowymi danymi.

Sello tak samo, dodano system zewnętrznej sprzedaży, czyli generalnie to co trzeba zrobić, aby to działało.

 

 

Czy było coś co łączyło inną konfigurację, na której odbywał się test z poprzednią? Np. ta sama sieć, serwer baz, to samo oprogramowanie antywirusowe zainstalowane? Sieć nie musi być zapchana, żeby źle działała - może być uszkodzona karta sieciowa, ruter, kabel.

Ta sama sieć, testowane również na osobnej, karty są sprawne, routery też, kable też. ;)

Testowałem również Win10 pro, Win Serv 2016,  SQL 2008 R2, 2016, tak samo.

 

 

 

Jak umieszczone są bazy obu programów? Jest jakiś serwer? Czy na lokalnie uruchomionym Sello i Subiekcie problem również występuje? Czy przy synchronizacji towarów również występuje jakieś zauważalne spowolnienie?

Jak napisałem w szczegółach, wymieniłem również sprzęt - w każdej konfiguracji zachowuje się tak samo.

Lokalnie, zdalnie.

Co do baz, umieszczone są na tym samym serwerze, testowałem również umieszczenie na osobnych serwerach, również to samo.

Nie występuje spowolnienie podczas synchronizacji towarów.

 

 

Jedyny punkt tutaj zaczepienia który wyszedł to start okna paragonu imiennego z wypełnionymi danymi.

 

 


[Dodatkowo poza tematem]

Podczas pobierania pełnych transakcji Activity Monitor pokazuje mi, że pojawiają się takie zapytania jak:

 

SELECT * FROM tr_item

SELECT * FROM tr_Address

SELECT * FROM pc_item

SELECT * FROM adr_ADdress

Z ponad 1211+ Exec/min

 

Da rade to poprawić, czy ta gwiazdka tam na pewno potrzebna?


Link to postu

U nas to samo. Chodzi o czas potrzebny na wystawienie dokumentu końcowego z poziomu sello (skrót ctrl+s, zresztą przy dokumentach wstępnych to samo). Nie jest to kwestia bazy, bo testowaliśmy na różnych bazach subiekta i sello.

Nie kwestia sprzętu bo też testowane na różnych komputerach.

 

Jak jest u was, ile trzeba czekać na wystawienie dokumentu końcowego ?

Link to postu

U nas to samo. Chodzi o czas potrzebny na wystawienie dokumentu końcowego z poziomu sello (skrót ctrl+s, zresztą przy dokumentach wstępnych to samo). Nie jest to kwestia bazy, bo testowaliśmy na różnych bazach subiekta i sello.

Nie kwestia sprzętu bo też testowane na różnych komputerach.

 

Jak jest u was, ile trzeba czekać na wystawienie dokumentu końcowego ?

 

 

Teraz jak patrzę, to 4-5 sek na pierwszy, a potem po 2 sek na każdy.

Te 2 sek to moment od wydania komendy drukowania paragonu w Sello do pojawienia się okienka Subiekta do zatwierdzenia paragonu.

Link to postu

Ja zbiorczo klikam "dokumenty końcowe" i bez względu na liczbę transakcji tworzą się bardzo szybko. Nie otwieram każdego paragonu z osobna bo wszystkie dane są od razu prawidłowo zrobione w transakcji więc dokumenty z Subiekta to już tylko formalność.

 

I faktycznie jest takie coś o czym pisze Ks. Robak - pierwsze otwarcie czegokolwiek w Subiekcie po włączeniu komputera, trwa widocznie dłużej niż każde następne. I dotyczy to każdego komputera w sieci lokalnej łącznie z serwerem.

Link to postu

U nas każde tworzenie dokumentu trwa te 5 sekund, pierwsze może trochę dłużej.

Dla jasności o co chodzi wysyłam filmik

 

 

U nas akurat odpada zbiorcze wystawianie dokumentów, bo przy każdym zdarza się coś do sprawdzenia, choćby nr telefonu, który nie jest automatycznie nadpisywany w subiekcie jeśli użytkownik go zmienił w allegro.

Link to postu

Ale zdajecie sobie sprawę, że aby wydrukować dokument musi zostać uruchomiony Subiekt, nowy zupełnie proces, i te 4s nie wydaje się jakimś strasznie długim czasem uruchamiania programu, otwarcia nowego okna. Spróbujcie uruchomić Subiekta ręcznie, zakładając nawet, że od razu się zaloguje do bazy i na użytkownika, to czas ten będzie zapewne podobny, plus doliczyć należy kilka operacji, które są wykonywane w tle, jak dodanie kontrahenta/aktualizacja kontrahenta i wypełnienie dokumentu. Nie wiem czy tutaj da się coś powalczyć o skrócenie tego czasu. Co innego jakby to było 20s za każdym razem to pewnie coś jest nie tak i trzeba by poszukać przyczyny.

Rozumiem, że 4s może się wydawać długo, ale porównując to z czasem wystawienia takiego paragonu, dodania kontrahenta ręcznie w Subiekcie, okazuje się, że to jest błysk.

 

Co do zapytań SQL, które tam gdzieś się pojawiają, to trudno mi powiedzieć tak bez kontekstu co do za polecenia i dlaczego pojawiają się akurat takie a nie inne.

 

Być może sprawa się poprawi po wdrożeniu nowego mechanizmu synchronizacji nad którym trwają prace od jakiegoś czasu. Ale tutaj znów, skracając czas dostępu np. poprzez trzymanie ciągle uruchomionego Subiekta nagle się okaże, że brakuje wolnych licencji i dlaczego Sello trzyma Subiekta ciągle uruchomionego niezwalniając licencji jeśli nic nie robi.

Link to postu

Ale zdajecie sobie sprawę, że aby wydrukować dokument musi zostać uruchomiony Subiekt, nowy zupełnie proces, i te 4s nie wydaje się jakimś strasznie długim czasem uruchamiania programu, otwarcia nowego okna. Spróbujcie uruchomić Subiekta ręcznie, zakładając nawet, że od razu się zaloguje do bazy i na użytkownika, to czas ten będzie zapewne podobny, plus doliczyć należy kilka operacji, które są wykonywane w tle, jak dodanie kontrahenta/aktualizacja kontrahenta i wypełnienie dokumentu. Nie wiem czy tutaj da się coś powalczyć o skrócenie tego czasu. Co innego jakby to było 20s za każdym razem to pewnie coś jest nie tak i trzeba by poszukać przyczyny.

Rozumiem, że 4s może się wydawać długo, ale porównując to z czasem wystawienia takiego paragonu, dodania kontrahenta ręcznie w Subiekcie, okazuje się, że to jest błysk.

 

Co do zapytań SQL, które tam gdzieś się pojawiają, to trudno mi powiedzieć tak bez kontekstu co do za polecenia i dlaczego pojawiają się akurat takie a nie inne.

 

Być może sprawa się poprawi po wdrożeniu nowego mechanizmu synchronizacji nad którym trwają prace od jakiegoś czasu. Ale tutaj znów, skracając czas dostępu np. poprzez trzymanie ciągle uruchomionego Subiekta nagle się okaże, że brakuje wolnych licencji i dlaczego Sello trzyma Subiekta ciągle uruchomionego niezwalniając licencji jeśli nic nie robi.

 

 

No zdaję sobie sprawę.

Zwłaszcza, że sprzęt jakim dysponuje to nie staroć z 2000 roku i proces subiekta (normalnej aplikacji) startuje błyskawicznie.

 

Więc chcesz powiedzieć, że tworzenie dokumentów za każdym razem: 

- otwiera sesje

- pobieranie / aktualizacja / dodanie kontrahenta

- wypełnianie danych

- czekanie na zamkniecie okna

- inne operacje

- zamkniecie sesji

 

Moim zdaniem dużo wygodniej byłoby trzymać otwartą sesję (chociaż na czas przebywania w zakładce transakcje). Chyba, że się mylę ;)

 

Był tu kiedyś taki podobny temat, okazało się, że była wadliwa jakaś procedura, w której są same select.. select in select... ale to temat z 2014 i nic konkretnego nie dało się wywnioskować.

 

 

Wiesz, dla Ciebie to tylko 4 sekundy, tak samo jak i dla mnie. Najchętniej to byśmy puszczali zbiorczo, ale po prostu się nie da. Czasami trzeba ręcznie coś zmienić i no to czekanie na okno programu dobija.

 

Ja proszę, abyście wzięli sobie ten problem do serduszka i coś z nim zrobili w przyszłości :)

Zdaję sobie sprawę, że jesteśmy w "mniejszości" osób które tworząc dokument końcowy muszą coś zmieniać..

 

 

Kiedy można spodziewać się nowej aktualizacji która wprowadzi nowy mechanizm synchro?

 

 

 

Co do zapytań SQL, które tam gdzieś się pojawiają, to trudno mi powiedzieć tak bez kontekstu co do za polecenia i dlaczego pojawiają się akurat takie a nie inne.

 

Tu nie ma co mówic. Ctrl +F i szukaj w kodzie będzie jak znalazł. :-)

Podczas pobierania pełnych formularzy przewijają się takie polecenia. SELECT'y Okej, ale nie z gwiazdką. Jeśli piszecie nową "synchronizację" to warto to też poprawić.

To taki performance problem który znalazłem przy okazji.

 

 

 

 

 

 

Link to postu

 

Tu nie ma co mówic. Ctrl +F i szukaj w kodzie będzie jak znalazł. :-)

Podczas pobierania pełnych formularzy przewijają się takie polecenia. SELECT'y Okej, ale nie z gwiazdką. Jeśli piszecie nową "synchronizację" to warto to też poprawić.

To taki performance problem który znalazłem przy okazji.

 

 

Ja jednak wierzę w ST i wierzę, że kod jest dość zoptymalizowany.

Sello to program bardzo rozbudowany, który musi współpracować z wieloma innymi systemami, stąd trudno o idealne optymalizacje, bo to co jest niepotrzebne do jednego systemu może być niezbędne do drugiego.

 

Selecty z gwiazdką to nic złego, pod warunkiem, że wszystkie te dane są potrzebne.

A skąd wiesz, że nie są ?

Link to postu

Ja jednak wierzę w ST i wierzę, że kod jest dość zoptymalizowany.

Sello to program bardzo rozbudowany, który musi współpracować z wieloma innymi systemami, stąd trudno o idealne optymalizacje, bo to co jest niepotrzebne do jednego systemu może być niezbędne do drugiego.

Ja widzę jakie zapytania mi lecą w Activity Monitor w tysiącach. :)

Z tą optymalizacją chodziło Ci o trzymanie sesji, czy poprawa zapytań do bazy?

 

IMHO w żadnym wypadku nie robi to BC.

 

 

 

Selecty z gwiazdką to nic złego, pod warunkiem, że wszystkie te dane są potrzebne.

A skąd wiesz, że nie są ?

Ja tam byłem uczony, że niezależnie od tego co jest potrzebne a co nie, gwiazdek unikać. Stack.

Może są, może nie. Zgłaszam potencjalną możliwość poprawienia wydajności aplikacji.

;)

 

Dzięki za zainteresowanie tematem.

Pozdrawiam

 

Link to postu

 

Z tą optymalizacją chodziło Ci o trzymanie sesji, czy poprawa zapytań do bazy?

 

 

Z optymalizacją chodziło mi o całokształt aplikacji.

Co do zapytań, Bartek kiedyś wspominał, że Sello komunikuje się z Subiektem przez coś w rodzaju Sfery, więc być może wcale to nie Sello jest odpowiedzialne za te zapytania.

 

Optymalizacja tak dużych programów jest trudna. I bardzo czasochłonna.

I bardzo dużo błędów może wprowadzić nowych.

 

W praktyce to nie wygląda tak prosto jak starasz się to przedstawić, czyli "find, popatrzeć i gotowe".

 

Zwłaszcza, że Sello przez te wszystkie lata tworzyli różni ludzie, wielu już nie pracuje w Insercie, a kod został.

 

Fajnie jak by wszystko szybko chodziło, ale wydaje mi się, że dopóki nie powstanie Sello 2.0, przebudowane od początku, coś jak Subiekt Nexo, nie da się wiele zmienić.

Link to postu
Kiedy można spodziewać się nowej aktualizacji która wprowadzi nowy mechanizm synchro?

Termin jeszcze nie jest ustalony. W rzeczywistości w jakiej się obracamy, czyli ciągłe zmiany to w tym serwisie, to w innym trudno dokładnie oszacować termin wprowadzenia "zwykłych" nowości a zmiana całkowicie podejścia do synchronizacji (o jakiej tutaj mówimy) to jest tak wiele różnych niewiadomych po drodze, że nie jestem w stanie obecnie podać, czy będzie to za 3 miesiące, czy za 9.

 

Kwestię czasu tworzenia dokumentów również już poruszaliśmy.

 

Tu nie ma co mówic. Ctrl +F i szukaj w kodzie będzie jak znalazł. :-)

Nie mamy w kodzie SQLi, są one generowane przez framework, dlatego ctrl+Shift+F tutaj w niczym nie pomoże ;). Podobnie przy synchronizacji Sello rozmawia z Subiektem poprzez API, nie przez bezpośrednie odwołania do bazy danych, więc tutaj również nie mamy w pływu na to co dany Subiekt generuje przy wywołaniach.

 

Ja jednak wierzę w ST i wierzę, że kod jest dość zoptymalizowany.

Zawsze jednak da się coś zoptymalizować bardziej :). Tym, bardziej, że nie cały kod jest napisany przez nas - jakkolwiek dobrzy byśmy nie byli ;). Tam, gdzie były lub pojawiły się jakieś problemy z wydajnością to poprawki do tego były wdrażane - jeśli dało się jakiś proces zoptymalizować. W przypadku synchronizacji z Subiektem wydaje się, że jest tam jeszcze miejsce na optymalizację i taką też zastosujemy tworząc nowy konektor.

 

Link to postu
  • 2 miesiące temu...

Witam,

U nas problem z długim czasem oczekiwania na paragon pojawił kiedy bazę przenieśliśmy na inny komputer w sieci. Wcześniej dokumenty tworzyły się w około 2 -3 s. teraz na samo otwarcie okna wystawiania paragonu czekamy około 5s. Sieć nie jest zapchana pingi na poziomie 2 - 3 ms. Serwer na SSD 6GB ram  2.5GHZ dual core. Poprzednio baza stała na windows 10 (serwer i stacja robocza  w jednyum) teraz baza jest na Win 7 stacja robocza została jak poprzednio z podłączoną drukarką.

 

W między czasie aktualizowane było sello do 1.23 - być może tu jest problem?

Link to postu

aktualizowane było z poprzedniej to jest chyba 1.22 index też dodałem jak parę postów wyżej - żadnego rezultatu. Sprawa jest uciążliwa przy większej ilości zamówień z drukowaniem zamówień + paragony schodzi z 10 razy dłużej. W samym subiekcie wystawianie paragonów odbywa się normalnie, problem ewidentnie jest w komunikacji sello - subiekt

Link to postu

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.
Uwaga: Twój wpis zanim będzie widoczny, będzie wymagał zatwierdzenia moderatora.

Użytkownik forum
Odpowiedz...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...