Dziwny kłopot z wydajnością - program sprzedażowy + mssql

0

Drodzy forumowicze - mam bardzo nietypowy problem z wydajnością Subiekta (programu sprzedażowego, który korzysta z serwer sql). Nie wiem czy znajdzie się wystarczająco mądra głowa, żeby mi pomóc, aczkolwiek bardzo na to liczę ponieważ ja sam już nie mam koncepcji.

Sytuacja wygląda tak: zainstalowałem dawno temu subiekta "serwer" na jednym komputerze. Zwykły pecet - Intel Core duo, 2,4GHz, 8GB RAMu, normalny magnetyczny HDD - naprawdę nic szalonego, ale jednocześnie wystarczającego. Wszystko działało dobrze, ja na tym komputerze na co dzień pracowałem, a dwa pozostałe komputery podłączały się do serwera subiekta i wszystko było przez trochę ponad rok super dobrze. Subiekt działał jak szalony (czyt. bardzo dobrze) - po sieci także. Sytuacja zaczęła się rozwijać i pomyślałem sobie, że fajnie będzie postawić "serwer", który będzie włączony 24/7 i każdy w każdej chwili będzie mógł się do niego podłączyć i nie będzie potrzeby uruchamiania tego konkretnego PC tylko po to, żeby ktokolwiek mógł skorzystać z subiekta. Poza tym to rozwiązanie ma dla mnie jeszcze całą masę innych plusów ale nie o tym chcę pisać.

Wybór na "bazę" na serwer padł na laptopa - Lenovo T400: Intel core duo P8400 (2,4GHz), 4GB ramu Hynix w jednej kości (upolowane najlepsze możliwe - toż to serwer, musi być dobre), dysk twardy SSD Plextor M6P (importowany jeszcze z Niemiec miesiąc temu bo w Polsce był niedostępny), gigabitowa karta sieciowa itp., itp. Zabawka Naprawdę idealna, wychuchana, poskładana na najlepszych możliwych komponentach - wychodzi na to że Subiekt powinien na tym szaleć i tańczyć, a na pewno nie powinno być gorzej niż na komputerze stacjonarnym, z którego się przesiadłem, głównie ze względu na dysk SSD oraz fakt, że ten komputer bezie zajmował się "głównie" subiektem, a nie tylko "przy okazji" - tak jak to było podczas korzystania z komputera stacjonarnego na którym jednocześnie pracowałem.

No i cóż - jest gorzej. Jest kiepsko, dzisiaj pół dnia próbowałem dowiedzieć się, co zrobiłem nie tak i mi się nie udało. Otóż całokształt działa nieźle - naprawdę podejrzewam że podczas normalnego użytkowania będzie czuć spadek wydajności, ale nie na tyle duży, żeby powiedzieć że spadnie jakość pracy. Być może spora część osób by się nawet nie zorientowała, że program pracuje gorzej, ale to ewidentnie różnica jest i to spora.

Problem jest głównie w odświeżaniu całości. Mam odpaloną bazę danych, wchodzę w sprzedaż detaliczną - czyli wyświetlam listę wszystkich wystawionych paragonów. Wciskam F5 - i całość odświeża się - okolice 0,7 sekundy. Czyli klik - komputer myśli - reakcja. Naprawdę jest to zauważalne i problematyczne przy częstym odświeżaniu. Na komputerze stacjonarnym Ten czas na pewno jest poniżej 0,05 sekundy. Jedna baza danych, dwa różne komputery, na jednym - czyli laptopie - mogę atakować F5 - nacisnąć je powiedzmy najszybciej jak to możliwe 100 razy - i spokojnie zdjąć ręce z klawiatury a komputer ma jeszcze na 30 sekund liczenia i odświeżania mimo, że ja już klawiszy nie dotykam. Na komputerze stacjonarnym na którym wszystko było do tej pory takiej sytuacji wymusić się nie da - mogę naciskać F5 dwukrotnie szybciej a komputer reaguje na polecenie natychmiast, reakcja to przysłowiowe mgnienie oka.

Całość przekłada się też na dostęp do dokumentów, oraz ich tworzenie. Czuć wyraźną różnicę, że zamiast otworzyć dokument, to po wciśnięciu enter trzeba po prostu tą niecałą sekundę zaczekać.

Nie chcę żeby ktoś tutaj pisał, że z sekundy oczekiwania robię problem, ale to naprawdę podczas obsługi klienta przez telefon może stać się niekomfortowe, poza tym w przeniosłem serwer subiekta na maszynę szybszą, a działa wolniej - coś nie gra ;)

Zmierzajmy pomału do meritum. Atakując F5 uruchomiłem managera zadań i wszystkie możliwe znane mi aplikacje do monitoringu pracy systemu i starałem się znaleźć, gdzie jest "wąskie gardło". Od razu piszę: wykluczyć możemy technologie typu intel speedstep - procesor spięty jest na sztywno na 80 i więcej procent w biosie. I tak na dobrą sprawę niewiele udało mi się ustalić. Zerknijcie na te dwa zdjęcia - pierwsze z laptopa-serwera, który działa wolniej a drugi z PC-serwera, który działa bardzo szybko. Zdjęcia wykonane są po minucie atakowania F5 w sprzedaży detalicznej:

LAPTOP
[url=http://fotozrzut.pl/][img]http://fotozrzut.pl/zdjecia/113ac7d3a4.png[/img][/url]

PC
[url=http://fotozrzut.pl/][img]http://fotozrzut.pl/zdjecia/ea0d1d88fe.png[/img][/url]

I dodam jeszcze jedno - wynik z crystaldisk na laptopie wykluczający "wąskie gardło" w postaci SSD lub obsługi SATA (tak wiem, wynik niewiarygodny, ale nowe SSD Plextora M6P z funkcją Plextrubo która - z tego co wiem - używa pamięci ram komputera jako cache HDD robi robotę):

[url=http://fotozrzut.pl/][img]http://fotozrzut.pl/zdjecia/90ea981fad.png[/img][/url]

Co widać na wykresach:

Na wykresie CPU niebieską linią zaznaczone jest taktowanie procesora (100% znaczy że speedstep nie jest tu kłopotem bo procesor faktycznie pracuje na 2,4GHz), zieloną linią widnieje obciążenie procesora (które jak widać "stoi" przy 50%, ale w miarę jednakowo na obydwu komputerach, więc nie robię z tego problemu - najwidoczniej darmowe SQL na którym "stawiany" jest subiekt nie potrafi obsłużyć dwurdzeniowego procesora na maksimum, tylko jeden rdzeń na 100% co daje nam dokładnie połowę użycia), a pomarańczona linia pokazuje ile procent procesora używa proces LSASS, który tak bardzo chciałbym winić za wolne działanie ale nie potrafię. Otóż z tego co wywnioskowałem aplikację, które powodują łącznie 50% obciążenia procesora są dwie: LSASS w połączeniu z SQLSRVR - z tym że na komputerze stacjonarnym LSASS zjada 5%, a SQLSRVR 45%, a na laptopie LSASS zjada 35% przez co SQLSRVR ma tylko 15% do dyspozycji. I tutaj być może jest problem, ale nie potrafię wywnioskować jak i dlaczego LSASS zjada tak dużo zasobów na moim laptopie Jak widać na końcu wykresu, gdy komputer przestaje być atakowany F5 - jeden i drugi proces przestają obciążać procesor.

To co widać na dyskach w obydwu przypadkach - nie mają wiele roboty. Pamięć tak samo - jest jeszcze w zapasie.

Interesuje mnie za to wykres SIEĆ i prawdopodobnie tutaj jest problem. Otóż atakując F5 na laptopie - mimo, że wszystko dzieje się wewnątrz jednego komputera - wskaźnik użycia sieci w Windowsowym Monitorze zasobów pokazuje użycie sieci na poziomie 50Mb/s i nie chce więcej. Tak jakby to był dławik całego procesu. Na komputerze stacjonarnym ta linia jest wyżej - bo na poziomie 100Mb/s. I tutaj właśnie zgubiłem trop. Co, jak i dlaczego. Ja to widzę tak, analizując ten ruch "sieciowy" to wynika, że ruch odbywa się pomiędzy dwoma aplikacjami na jednym komputerze - pomiędzy procesem SUBIEKT oraz procesem SQLSRVR. Pytanie brzmi czy to faktycznie jest jakieś "wirtualne" połączenie sieciowe, czy tak to widzi komputer i czy ewentualnie gdzieś jest do ustawienia coś, to takie ograniczenie może powodować? A możę problem jest gdzie indziej? I dlaczego LSASS zjada tak dużo czasu procesora na laptopie? czy to może być spowodowane tym, że czeka na wynik z "sieci"?

Proszę o jakąkolwiek jak to ugryźć, jak to diagnozować każdego, kto przeczytał ten temat i ma jakikolwiek pomysł...

P.S. Żeby było śmieszniej: komputer ma kartę sieciową 100mbps a laptop 1gbps ;) Tak wiem, że to nie jest połączenie sieciowe, ale piszę tylko po to, żeby Was upewnić w przekonaniu, że sieć to nie sieć, tylko jakieś ruchy między aplikacjami w komputerze :)

0

pierwsze i zasadnicze pytanie

dlaczego nie zapytasz o to firmy ktora stworzyla subiekta zeby Ci pomogli? Przeciez na pewno maja helpdesk. To tak jakbys pytal fanow audi dlaczego nissan zbiera sie tak wolno. Mozemy zgadywac, ale wlasnie. To beda strzaly. Nie lepiej pojsc do nich i zapytac sie? Zapewne mieli kilkanascie takich problemow wiec beda wiedziec co zrobic.

0

ograniczenia wersji express

Hardware-utilization limits:
Single physical CPU, but multiple cores allowable[4]
1 GB of RAM (runs on a system with any RAM amount, but uses only at most 1 GB)

  1. laptop to nie jest dobre rozwiązanie na serwer - już lepiej kupić (złożyć) zwykłego PC
  2. jaki był, jaki jest teraz system operacyjny?
  3. jaka była, jaka jest teraz wersja mssqla?
  4. jak kopiowałeś bazę z jednego na drugi komputer?
  5. czy masz tam domenę czy nie?
  6. dużo napisałeś ale ja nie jestem pewien - jeśli uruchomisz subiekta na tym samym kompie co mssql to też czuć spadek wydajności?
  7. jak się łączy program do mssqla (jaki jest typ uwierzytelniania)?
0
fasadin napisał(a):

pierwsze i zasadnicze pytanie

dlaczego nie zapytasz o to firmy ktora stworzyla subiekta zeby Ci pomogli? Przeciez na pewno maja helpdesk. To tak jakbys pytal fanow audi dlaczego nissan zbiera sie tak wolno. Mozemy zgadywac, ale wlasnie. To beda strzaly. Nie lepiej pojsc do nich i zapytac sie? Zapewne mieli kilkanascie takich problemow wiec beda wiedziec co zrobic.

Tylko dlatego, że problem raczej nie leży tam, skoro na jednym komputerze działa dobrze a na drugim nie - wąskie gardło jest moim zdaniem gdzieś w procesie lsass albo "wirtualnym" połączeniu sieciowym między subiektem a serwerem sql - twórcy tej aplikacji raczej nic do tego nie mają. Aczkolwiek jak nie znajdę odpowiedzi tu i tam to zapytam też u nich...

abrakadaber napisał(a):

ograniczenia wersji express

Hardware-utilization limits:
Single physical CPU, but multiple cores allowable[4]
1 GB of RAM (runs on a system with any RAM amount, but uses only at most 1 GB)

  1. laptop to nie jest dobre rozwiązanie na serwer - już lepiej kupić (złożyć) zwykłego PC
  2. jaki był, jaki jest teraz system operacyjny?
  3. jaka była, jaka jest teraz wersja mssqla?
  4. jak kopiowałeś bazę z jednego na drugi komputer?
  5. czy masz tam domenę czy nie?
  6. dużo napisałeś ale ja nie jestem pewien - jeśli uruchomisz subiekta na tym samym kompie co mssql to też czuć spadek wydajności?
  7. jak się łączy program do mssqla (jaki jest typ uwierzytelniania)?

taak, już widziałem, że teoretycznie powinien wiele rdzeni ten sql obsłużyć, ale nie robi tego i nie było to problemem na komputerze stacjonarnym więc rozwiązaniem tego zajmę się później - jak tylko uporam się z obecnym problemem ;)

  1. Nie widzę przeciwskazań. Używam tego sprzętu od nastu lat mam już kilka takich laptopów działających kilka lat nieprzerwanie i nie dzieje się nic. Ale to nie temat na dywagacje w tej kwestii :)
  2. jaki był, jaki jest teraz system operacyjny? - windows 7 Home Premium na każdym z nich
  3. jaka była, jaka jest teraz wersja mssqla? - taka sama - 2008 R2, czyli 10,5.
  4. jak kopiowałeś bazę z jednego na drugi komputer? - oprogramowanie (subiekt) posiada możliwość "archiwizacji: bazy do pliku .iar i dearchiwizacji z tego pliku na drugim komputerze po skopiowaniu pliku - tak też zrobiłem.
  5. czy masz tam domenę czy nie? - nie mam
  6. dużo napisałeś ale ja nie jestem pewien - jeśli uruchomisz subiekta na tym samym kompie co mssql to też czuć spadek wydajności? - tak, dokładnie na tym samym jest kompie jest sql i subiekt i jest spadek wydajności.
  7. jak się łączy program do mssqla (jaki jest typ uwierzytelniania)? - oj obawiam się, że to pytanie może mnie przerosnąć, ale jeżeli się nie mylę, to normalnie po loginie i haśle, bez uwierzytelniania windows.
0

pierwsze co bym sprawdził to ustawienia serwera mssql jeśli chodzi o połączenie. Nie pamiętam gdzie dokładnie ale możesz zacząć od porównania na obu kompach info stąd

To view or change server properties

On the Start menu, point to All Programs, point to Microsoft SQL Server 2014 , point to Configuration Tools, and then click SQL Server Configuration Manager.

In SQL Server Configuration Manager, click SQL Server Services.

In the details pane, right-click SQL Server (<instancename>), and then click Properties.

In the SQL Server (<instancename>) Properties dialog box, change the server properties on the Service tab or the Advanced tab, and then click OK.

druga rzecz jaką bym zrobił to ręczny eksport i import bazy.

2

Udało mi się rozgyźć problem - niestety jak to często bywa zostałem z problemem sam i nie mam tego nikomu za złe, to bardzo specjalistyczna sprawa. Może komuś sie przyda to co udało mi sie ustalić tracąc zdrowie :)

Chciałbym opisać rozwiązanie, ponieważ istnieje spore prawdopodobieństwo, że tych, którym zależy na wydajności problem będzie dotykał coraz częściej i będą zadawać podobne pytania.

Nie będę opisywał drogi, jak doszedłem do rozwiązania (może raczej do ustalenia źródła - tak będzie poprawniej) problemu, to nieistotne.

A brzmi on: poprawka do systemów Windows (obejmuje Vista, Windows 7, Windows 8/8.1, i Windows Server 2003, 2008, 2008 R2, 2012, oraz 2012 R2), numer KB2992611, wydana 11. listopada 2014. roku. Jest spaprana, spowalnia pracę różnych serwerowych aplikacji (nie znam się na tym za bardzo), ale jej odinstalowanie rozwiązuje problem ze zjadaniem zasobów procesora przez LSASS.

Więcej tutaj: http://www.infoworld.com/article/2848574/operating-systems/microsoft-botches-kb-2992611-schannel-patch-tls-alert-code-40-slow-sql-server-block-iis-sites.html

0

w zasadzie jeśli nie trafiłbyś na człowieka, który już to przerabiał to nie widzę możliwości aby ktoś Ci pomógł w przypadku, kiedy problemem jest łatka z MSa

1 użytkowników online, w tym zalogowanych: 0, gości: 1