Att optimera servern

Switchking / Att optimera servern

Att optimera servern

Switch Kings serverdelar är efter installation konfigurerad med något som är att betrakta som en grundkonfiguration. För de allra flesta passar denna konfiguration alldeles utmärkt.

När man lägger till fler och fler enheter, lägger på datakällor och dessutom regler som är styrda till enheternas scheman ökar komplexiteten i servern och svarstiderna till klienter kan ibland upplevas som långa.

Detta beror bl.a. på att servern är anpassad för att kunna hantera flera konkurrerande klienter som samtidigt begär information från servern eller skickar in information till servern som kan påverka enheternas tillstånd (på eller av). Dessutom använder Switch King databasmotorn SQLite som grund. Skrivning och läsning från SQLite är tidskrävande och tar mycket av serverns tid i anspråk.

 

I version 0.6 av Switch King har det gjorts dramatiska förbättringar gällande prestanda.
Följande tips gäller alltså först och främst v0.5.3 och tidigare.

Orsaker till längre svarstider

Följande är exempel på vad som kan orsaka att det ibland kan ta lång tid innan servern svarar klienten.

Omberäkning av scheman

Under tiden som servern beräknar om scheman är alla klienter utelåsta. Omberäkning av scheman tar för 20 enheter med komplexa scheman runt 200-300ms.
Till detta hör databasoperationer som tar betydligt längre tid.

I v0.6 och senare har antalet omberäkningar av scheman kraftigt reducerats under tiden man modifierar information i klienten, medan de i v0.5 beräknas om betydligt oftare.

Datakällor

Insamlig av data från externa datakällor påverkar prestandan. I grundkonfigurationen är tid mellan insamlingarna satt till 20 sekunder. Det betyder att servern var 20:e sekund ska kontrollera om det är några datakällor som ska kontaktas.

Regelstyrda scheman

Regelstyrda scheman kräver att reglerna utvärderas kontinuerligt. Detta tar tid och kraft.

Konfigurationsmöjligheter

Direkt i klienten

Det finns inställningar i klienten som direkt har påverkan på servern. Dessa är enkla att ändra.

Send Count

Via denna inställning styrs hur många signaler som ska skickas till enheterna. Ju fler signaler som skickas till enheterna, desto mer får servern jobba.
Om du har bra räckvidd på din Tellstick kan du ställa ner denna parameter.

I konfigurationsfil

Konfigurationsfilen till Switch Kings serverdelar heter ”SwitchKing Service Host.exe.config”. Det är en xml-fil som enkelt kan öppnas i exempelvis Anteckningar/Notepad. I konfigurationsfilen finns ett antal inställningar som kan påverka serverns prestanda.

Innan du gör några ändringar i konfigurationsfilen – ta en kopia på filen. Efter att ändringar gjorts i filen måste servertjänsterna startas om.

Nedan finns några av inställningarna i konfigurationsfilen beskrivna.

logStorageLimitHours

<add key="precalcLimitHours" value="24" />

Denna inställning anger hur lång tid framåt i tiden servern ska lagra information om beräknade schemalagda händelser. Om det finns många scheman eller enheter kan det vara idé att minska denna. Ett värde på mellan 6-12 är att rekommendera. Ju mindre värde, desto färre ”kommande händelser” syns i klienten.

logSeverityThreshold

<add key="logSeverityThreshold" value="Status" />

Denna inställning anger hur mycket information servern ska logga. Grundinställningen – ”Status” – är att föredra. Om du någon gång haft servern i debugläge och inte ställt tillbaka till status så är en ändring att rekommendera.

pauseBetweenTransmissions

<add key="pauseBetweenTransmissionsMs" value="200" />

Detta värde anger att servern ska tvingas vila i 0,2 sekunder mellan varje kommando skickas till enheterna. Det är möjligt att sänka värdet, men ett för lågt värde kan leda till att USB-stickan inte hinner med att skicka kommandon till dina enheter.

invocationThreadSleep

<add key="invocationThreadSleep" value="600" />

Inställningen anger att servern ska vila i 0,6 sekunder mellan varje utvärdering av enheternas tillstånd. Ett högre värde ger en bättre svarstid till klienten, men resulterar också i att exempelvis schemaberäkningar i klienten kan fördröjas aningen.

dataCollectorThreadSleep

<add key="dataCollectorThreadSleep" value="20000" />

Denna inställning anger hur ofta datainsamlingsmotorn ska gå. Ett värde på 20000 innebär att den går var 20:e sekund. Det är möjligt att öka detta värde till exempelvis 60000 (1 minut) om man nöjer sig med att hämta in data från externa källor mer sällan.