When STARLIMS feels slow, finding the cause is a joint effort. You know your users, your network and your servers; we know how STARLIMS behaves and what it needs from the platform underneath it. This article is the shared checklist we work through together with you, so that neither side has to guess.
We'll guide you through it in a ticket and tell you which chapters apply to your situation; you do not have to do everything at once. Most performance tickets are solved with the information in the first three phases. If yours needs our database specialists, phase 4 makes sure they get what they need in one go instead of a second round of questions.
The four phases:
- Understanding the problem — what is slow, for whom, since when and what changed. You answer; we turn it into a precise problem statement and confirm it back to you.
- Checking the requirements — what STARLIMS needs from hardware, software and configuration, with the reason behind each requirement. Many findings here can be corrected by your own IT team straight away, and we review the rest with you.
- Collecting data — measurements and read-only scripts that give both of us facts about your servers, database and network.
- Advanced data collection — additional information our database administrator may ask for in complex cases.
A few things make this go faster for everyone:
- Please answer in the ticket rather than in separate e-mails, in English, and include dates and times wherever you can; we match your answers against log files.
- Tell us who your IT and database contacts are, so we can discuss technical details with them directly or address them in the conversation.
- Measure while the problem is happening, not after a restart.
- Nothing in this article changes your system. All scripts are read-only. Any change we recommend comes later as a separate, explicit request, so it can follow your own change procedure.
- If your STARLIMS environment is hosted by STARLIMS, chapter 2 and most of chapter 3 are our responsibility; your engineer will tell you which parts still apply to you (usually the client and network checks).
1. Intake Questions; Understanding the Problem
The goal of this chapter is to understand scope, timing, and history and not to jump into technical details yet.
1.1 Scope — what exactly is slow?
Is this happening in one specific screen/module/report, or everywhere in STARLIMS?
Does it happen for one user, a specific group/site, a location or everyone?
Does it happen on all client machines, or only some? (Same issue on a fresh/different PC?)
Is it slow logging in, opening a folder/sample, running a report, saving data, or something else specific?
1.2 Timing — when does it happen?
Is it slow all day, or only at certain times (e.g. first thing in the morning, around shift change, end of (work)day)?
Did it start suddenly on a specific date, or has it been gradually getting worse?
Is it worse under heavier load (more users logged in, batch jobs running, day-, week- or month-end reporting)?
1.3 Recent changes — what changed?
Any recent STARLIMS updates/patches, hotfixes, or custom code deployments?
Any recent infrastructure changes: server moves, VM resizing, network changes, antivirus updates, Windows/SQL patching, storage changes?
Any recent integration or volume changes (new instrument feeds, new interface, data migration, larger data sets)?
1.4 What has already been tried?
Are servers rebooted / IIS reset / SQL Server restarted?
⚠️This is not an invitation to do so, we only want information at this point.Has the local IT team already looked at CPU, memory, or storage on any server?
Has it been reproduced on a different client PC, on the STARLIMS application server (using localhost) or off-network (e.g. VPN vs. LAN)?
Is there an existing support ticket history for similar complaints?
Outcome of Step 1: it should now be possible to describe the problem in one paragraph or sentence, e.g. "Since early spring, STARLIMS has been getting gradually slower for all users, in both the browser and the App. Loading the login page takes up to 50 seconds in the morning, Edit Batch takes 20–30 seconds to open, and result entry times out often enough that users get locked out and calculations fail. It is worst in the afternoon and in the last week of the month; nothing changed in STARLIMS, but IT moved the servers to a new VM cluster in February and a BI extract was added in March. Restarting IIS helps for about an hour."
or "Since the June 3 patch, opening the Edit Folder screen takes 20+ seconds for all users on-site, but is fine over VPN."
If you can't yet, keep digging — don't move to Step 2 with a vague problem statement.
2. Intake Questions; Checking the Requirements
Performance tuning only works on a system that meets the basics. This chapter lists what STARLIMS needs from your workstations, servers and database, and why. Please go through each item with your IT and database colleagues, correct what you can, and report back using the table at the end of the chapter. Where you cannot or do not want to change something, tell us; the reason is often just as useful to us as the change.
Requirements below are the minimums for an out-of-the-box STARLIMS system with up to 100 concurrent users (users, instruments and batch processes together). Customized systems, interfaces and more users need more. The authoritative figures are in the System Requirements page of the Technology Platform guide or Release Notes for your version; the values quoted here are from Technology Platform 12.10.
If your STARLIMS environment is hosted by STARLIMS, only section 2.1 (client workstations) applies to you. The rest is ours.
2.1 Client workstations
| Requirement | Why |
|---|---|
| Windows 10 or 11; 2.0 GHz CPU; 2 GB RAM; 10 GB free disk; 1920×1080 after DPI scaling for the HTML5 client. | Below this the browser, not STARLIMS, could be a performance bottleneck; STARLIMS screens are designed for 1080p. |
| Supported browser: Chrome or Edge (Chromium) for the HTML5 client; Edge in IE mode for the classic XFD client. | Other browsers and old versions are untested and not supported. |
| .NET Framework 4.8 (STARLIMS Bridge, new XFD controls, Crystal viewer); .NET 3.5.1 for XFD in IE mode. | Missing frameworks cause slow first loads or fallbacks. |
Antivirus excludes the client cache folders on XFD/Bridge clients: %LOCALAPPDATA%\Temp\XFDRuntimeCache and %LOCALAPPDATA%\StarlimsBridge. |
Real-time scanning of hundreds of small cached files slows every screen load. Mainly a server problem; with (very) aggressive (configured) antivirus software a client might be affected too. Read more... |
| No proxy, web filter or VPN in the path between workstation and application server, or if there is one, it is known and documented. | Each hop adds latency to the many small requests STARLIMS makes. |
2.2 Application server
| Requirement | Why |
|---|---|
| Windows Server 2016, 2019 or 2022; 4 cores @ 2.5 GHz; 8 GB RAM; 100 GB disk; .NET Framework 4.8+; IIS 10. | IIS compiles and caches the STARLIMS application in memory; with fewer cores or less RAM the caches are evicted and rebuilt constantly. |
| If the server also runs the Manager Service (batch processor) or SDMS, add the requirements of those roles. | STARLIMS Worker Processes and IIS compete for the same cores and memory. |
| Dedicated to STARLIMS; no other applications. | Anything else on the box takes CPU and memory that IIS needs at peak. |
| Same time zone as the database server. | Date/time values generated by the database (getdate / sysdate) must line up with those from the application server. |
Antivirus excludes the STARLIMS application folder (e.g. C:\STARLIMS\<site>\), the work path and user-log folders if they are elsewhere, and *.rpt files in the Windows TEMP folder. See Antivirus Software Considerations
|
STARLIMS writes and reads thousands of cache and temp files; scanning each one slows every request. |
2.3 STARLIMS configuration on the application server
| Requirement | Why |
|---|---|
Production mode: In web.config UniqueAppDomain = true, RecycleAppDomains = Never and in STARLIMS in Main Menu > Utilities > Settings > Client Cache Control, both FORMS and IMAGES should be checked. See Production Mode Checklist & Production Mode
|
Production mode shares one compiled application domain between all users and never recycles it; development mode gives every user their own domain and recompiles constantly. |
| IIS application pool: all recycling conditions off (regular interval 0, no memory limits, no fixed times) and Idle Time-out 0. | Every recycle throws away the compiled cache; the first users after a recycle wait for everything to compile again. An idle timeout does the same every quiet night. |
Compression: static and dynamic compression enabled on the STARLIMS site, and application/json added to the dynamic compression types at server level, both in IIS. See How to enable dynamic JSON compression. |
Most STARLIMS traffic is JSON and script text, which compresses 5–10×; this matters most on slow or remote links. |
Read-only web sessions (HTML5 client only): EnableReadOnlySession = true in web.config, exceptions listed in ReadOnlySessionExceptions. See Read-Only Web Sessions. |
Without it IIS executes requests from the same browser one at a time; with it they can run in parallel. |
Language helper folders (XFD only): for every client OS language, a copy of xfdruntime\en and xfdruntime\en-US named after the language (e.g. nl, nl-NL). |
.NET looks for these folders first; when they are missing, every start-up probes and falls back, which is slow(er). |
Batch processor settings (Enterprise Settings): BATCH_LIMIT ≈ CPU cores / 2; BATCH_RECYCLE_MEMORY_USED set (default 1000 MB); BATCH_RECYCLE_RUN_ITEMS set to a value (not −1) when worker processes grow large. |
Worker processes accumulate memory; recycling them after a number of items or a memory limit keeps the server healthy. For more information keep reading here... |
2.4 Manager Service (batch), SDMS and Search servers
| Requirement | Why |
|---|---|
Manager Service / batch server: Windows Server 2016–2022; 4 cores @ 2.5 GHz; 8 GB RAM; 100 GB; .NET 4.8+. Each worker process has its own LocalCache folder, separate from the website's. |
Worker processes run reports, interfaces and background jobs; a shared cache folder with the website causes conflicts and slowdowns. |
| SDMS server: Windows Server 2016–2022; 4 cores @ 2.5 GHz; 8 GB RAM; .NET 4.8+; IIS 10. | SDMS parses and stores files; under-sized servers delay results reaching STARLIMS. |
| STARLIMS Search server (if used): Windows Server 2016; 2 cores @ 2.5 GHz; 4 GB RAM. | |
| Oracle customers: ODAC 19c Release 1 (19.3.0.0.0) on application, batch and SDMS servers. | Mismatched data-access components are a classic cause of slow connections. |
2.5 Database server (hardware and platform)
| Requirement | Why |
|---|---|
| 4 cores @ 2.5 GHz; 16 GB RAM; SSD or SAN RAID 1+0 with 15k FC drives. [T.P.] | The database must hold the working set of STARLIMS in memory; with less, every query reads from disk. |
| If virtual: CPU, memory and disk dedicated 1:1 to this VM, not over-allocated on the host. | A database server that waits for the hypervisor shows as random slowness in STARLIMS that no query tuning can fix. |
| Dedicated to the STARLIMS database: no other applications, no DEV/TEST/QA databases on the production instance, no SSMS work on the server itself. | Everything else on the box competes for the same memory and I/O; SSMS alone can take gigabytes. |
| Data files, transaction log, tempdb and backups on separate physical disks (separate LUNs or virtual disks, not partitions of one disk), formatted with a 64 KB allocation unit. | Data, log and tempdb have different I/O patterns; sharing one disk makes them wait for each other. SQL Server reads in 64 KB extents. |
| Same time zone as the application server. | Date/time values generated by the database (getdate / sysdate) must line up with those from the application server. |
| No warehouse extracts, BI tools, replication readers or monitoring collectors querying the production database directly during working hours. | Long reads hold locks on the tables STARLIMS needs and push STARLIMS data out of memory. Reporting belongs on a readable secondary, a replica or a restored copy. |
Read more details about this subject: Quick Checklist for SQL Server installations for STARLIMS
2.6 SQL Server configuration
| Requirement | Why |
|---|---|
| SQL Server 2019, 2022 or 2025. | Older versions are out of support and miss optimizer improvements STARLIMS relies on. |
| Max server memory set, leaving at least 6 GB for Windows on a dedicated server (more on large servers or with other services). | Unlimited, SQL Server starves the OS; too low, it starves itself. |
| Max degree of parallelism = 1 (instance or database-scoped). Report the cost threshold for parallelism too. | STARLIMS runs very many short queries; parallel plans add coordination overhead and cause CXPACKET/CXCONSUMER waits. Very large databases (≈1 TB+) may need tuning. |
| Compatibility level of every STARLIMS database equals the installed SQL Server version (2019 = 150, 2022 = 160). After changing it, update all statistics with full scan once. | STARLIMS ships with an older level; the newer optimizer is only used at the matching level. |
| Read Committed Snapshot Isolation (RCSI) on for the STARLIMS_DATA database. |
Readers no longer wait for writers; fewer blocks and deadlocks. ⚠️ Enabling it requires all connections closed (STARLIMS services stopped); plan a maintenance window; do not run it from this article. |
| Data and log files pre-allocated, autogrowth in MB, not percent (128–256 MB). | Percentage growth on a 100 GB file means multi-GB growth events that stall the database while the file expands. |
| Instant File Initialization granted to the SQL Server service account (not with TDE). | Data files grow without zero-filling. |
| tempdb: one data file per core up to 8, all the same size and growth, on its own disk. | A single tempdb file serializes allocations under load. |
| AUDITTRL table in its own filegroup (not PRIMARY). | The audit trail is often the largest table; isolating its I/O protects the rest. |
| Recovery model and backups: if FULL, transaction-log backups run regularly (hourly is typical) and the log file is not growing unbounded. | Without log backups the log grows for ever; a one-time shrink after the first log backup is fine, scheduled shrinks are not. |
| Index and statistics maintenance: a scheduled job (Ola Hallengren's Maintenance Solution) that updates modified statistics with full scan at least weekly and reorganises / rebuilds fragmented indexes (when over 5% / 30% fragmented). No SQL Server Maintenance Plans; never scheduled shrinks. | Stale statistics are the single most common cause of a suddenly slow STARLIMS query. |
Read more details about this subject: Quick Checklist for SQL Server installations for STARLIMS
2.7 Oracle configuration
| Requirement | Why |
|---|---|
| Oracle Database 19c. | Supported and tested version. |
| Oracle's automated maintenance tasks enabled (Optimizer Statistics Collection, Segment Advisor, SQL Tuning Advisor) or an equivalent DBA job. | Same reason as SQL Server statistics. |
Report the Adaptive Plans setting (optimizer_adaptive_plans). |
We are collecting experience; no change requested. |
| Data files, redo logs, temp and backups on separate storage; dedicated server; same time-zone and virtualization rules as 2.5. | See 2.5. |
2.8 Supported versions and lifecycle
Windows Server, SQL Server or Oracle versions that are out of extended support, and STARLIMS Technology Platform versions older than a couple of years, are not a performance problem in themselves, but they limit what we can recommend and fix. Please report the exact versions (the STARLIMS About screen has a Copy to clipboard button) and we will tell you where you stand.
For more details on supported versions see our Product Release and Support Matrix (Compatibility Matrix) and / or What's new in the latest Technology Platform (T.P.)?
3. Intake Questions; Getting some basic Data
This chapter collects quick facts and measurements that do not need special tools: screenshots, a few copy-and-paste queries and some timings. Most of it can be done by your STARLIMS administrator together with a Windows administrator in an afternoon. The results tell us where to look: at the servers, at the database, at the network or at the client. Please add the date and time to every measurement and, where possible, take them while the system is slow.
If your STARLIMS environment is hosted by STARLIMS, sections 3.5 to 3.7 (speed matrix, ping and trace route, download and HAR) and maybe 3.9 (other load on the database) are the ones that apply to you; we take care of the rest.
3.1 About screen
| What we ask | Why |
|---|---|
| Start STARLIMS, click the About button (top left), press Copy to clipboard and paste the text in a text file and attach to the ticket. | The About text gives us the exact Technology Platform, runtime, product and license versions in a form we can read reliably. Screenshots are harder to compare and often cut off. |
3.2 Configuration files
| What we ask | Why |
|---|---|
Attach the web.config of each STARLIMS website (C:\inetpub\wwwroot\<site>\web.config), the web.config of SDMS (SDMS site folder) and from the Manager Service its per-worker .config file (in the service's Configuration folder) and .srv file.Before you attach them, remove or mask all secrets: passwords and user names in connection strings, SMTP or LDAP credentials, machine keys, encryption keys, API keys and certificates. Replace the value with ***; keep the key names so we can see what is configured. If the appSettings or connectionStrings sections are encrypted, say so; we do not need the content of encrypted sections. |
The configuration file tells us in one go how the site runs: production or development mode, compiler and logging switches, session settings, time-outs, cache locations and connection-string options. Reading the file is faster and more reliable than asking for each key. |
3.3 Load on the servers
On each server (application, database, Manager Service/batch, SDMS if present) open Task Manager and fill in the table below. Take the values at a moment users report slowness; if you have a monitoring tool (Zabbix, SCOM, PRTG, vCenter…), a graph of CPU, memory and disk over the last 7 days is even better than a snapshot: attach it.
| What we ask (per server) | Why |
|---|---|
Memory: used GB / total GB. Memory of w3wp.exe (application server), sqlservr.exe (database server) and of each Starlims.Server.WorkerProcess.exe (application and batch server); number of worker processes; number of EXCEL.EXE processes. |
Shows whether the server is short of memory, whether IIS or a worker process has grown unusually large or worker processes are multiplying, and whether Excel-based reports are leaving processes behind. |
| CPU: average % over about 10 minutes while slow; does it hit 100 % on one or all cores, and how often? | Sustained high CPU on the database server points at query or configuration problems; spikes on the application server point at compilation, reports or antivirus. |
| A screenshot of the Details tab sorted by memory and one sorted by CPU (at least top 10 processes visible), with the capture time. | Lets us see what else is running: backup agents, remote-control tools, antivirus scans and monitoring agents have all turned out to be the real consumer in past tickets. |
| Is the server rebooted, IIS reset or SQL Server restarted on a schedule or by habit? How often, and since when? | Regular restarts hide problems and also reset the statistics we collect in chapter 4; we need to know the uptime to interpret them. |
3.4 Manager Service (batch processor)
The Manager Service runs the background work of STARLIMS: reports, interfaces, scheduled scripts and everything submitted to the batch queue. When it struggles, users see it as slow printing, late results or time-outs.
| What we ask | Why and what we look at |
|---|---|
|
On the STARLIMS DICTIONARY database run: SELECT SETTINGNAME, VALUE FROM LIMSENTERPRISESETTINGS WHERE SETTINGNAME LIKE 'BATCH%' ORDER BY SETTINGNAME Paste the result. |
We compare the settings with your server: BATCH_LIMIT should be about half the number of CPU cores, and when worker processes grow large (see 3.2) BATCH_RECYCLE_RUN_ITEMS and BATCH_RECYCLE_MEMORY_USED determine how often a worker process is restarted to release memory. If we see a reason to change them we will propose it as a separate request. |
Which server(s) run the Manager Service, how many worker processes are configured, and does each have its own LocalCache_<name> folder under the application bin folder? |
Worker processes sharing the website's cache folder interfere with each other and with IIS. |
|
On the STARLIMS DATA database run: SELECT STATUS, COUNT(*) FROM LIMSBATCHQUEUE GROUP BY STATUS and, if status 1 (started) or 2 (error) shows more than a handful of rows run: SELECT CAST(SCRIPT AS VARCHAR(200)) AS SCRIPT,
CAST(ERROR_MESSAGE AS VARCHAR(1500)) AS ERROR_MESSAGE,
COUNT(*) AS OCCURRENCES, MAX(QUEUE_DATE) AS LAST_SEEN
FROM LIMSBATCHQUEUE
WHERE STATUS = 2
GROUP BY CAST(SCRIPT AS VARCHAR(200)), CAST(ERROR_MESSAGE AS VARCHAR(1500))
ORDER BY 3 DESC
Paste both results (Excel is fine for the second). |
Successful items are removed from the queue, so what remains is the backlog and the failures. Hundreds of items in error, often years old, mean background jobs have been failing unnoticed; repeated “Execution Timeout Expired” errors point at the database; file-lock errors point at the application server. A queue that is cleaned and monitored keeps SubmitToBatch() and long-running server calls fast. |
3.5 Speed matrix
This is the single most useful measurement in this chapter. Time the same actions from different places, three times each, with a stopwatch. Before the first run on each machine, close all STARLIMS windows, and for XFD STARLIMS, clear the client cache with ccc.exe (Utilities on the STARLIMS landing page).
Note the date and time of each series.
Actions (adjust the last two (or more) to applications your users complain about):
- Open
<your STARLIMS URL>until the login page is fully shown. - Log in until the dashboard is fully shown.
- Open Edit Folder / Edit Batch empty.
- In Edit Folder / Edit Batch, load one month of data.
- Open a second frequently used application and load its data.
- Open a third frequently used application and load its data.
Locations: on the application server itself (http://localhost/<site>/), from a workstation in the office network, from a workstation at the site or network segment where users complain (factory, other building, remote site), and over VPN if users work that way. For XFD systems, run the series once in the browser and once in the STARLIMS App. If you can, repeat the whole matrix at a quiet moment and at a busy one.
| Action | Localhost (s) ×3 | Office (s) ×3 | Site/remote (s) ×3 | VPN (s) ×3 |
|---|---|---|---|---|
| 1. Login page | ||||
| 2. Dashboard | ||||
| 3. Edit Folder empty | ||||
| 4. Edit Folder one month | ||||
| 5. … |
| What we do with it |
|---|
| If localhost is as slow as the clients, the problem is on the server or in the database and we concentrate on chapter 4. If localhost is fast and clients are slow, the problem is in the network or on the client, and the difference between office, site and VPN tells us where. A large gap between browser and App on XFD systems points at download volume (compression, caching, antivirus). Action 1 versus 2 separates “loading STARLIMS” from “working in STARLIMS”. |
3.6 Ping and trace route
| What we ask | Why |
|---|---|
From a client workstation, in an elevated command prompt: ping <application server> and tracert <application server>. From the application server: ping <database server> and tracert <database server>. Paste the text output (not a screenshot) into the ticket, with the location of the client used. |
STARLIMS makes many small requests per screen; a few milliseconds of latency per request add up to seconds per screen. The number of hops shows firewalls, routers and tunnels between the parts of the system. |
3.7 Download test and browser trace
| What we ask | Why |
|---|---|
|
Download test: from a client, download (do not install) For the different T.P. versions:
|
Measures raw throughput between client and application server, independent of STARLIMS. |
Browser trace (HAR): in Chrome or Edge open Developer Tools (F12) → Network tab, tick Preserve log and Disable cache, then open <your STARLIMS URL>, log in and open Edit Folder. Right-click in the request list → Save all as HAR with content and attach the file. Do this from a slow client and, if possible, from the application server. |
The HAR file shows every request with its timing: waiting for the server, downloading, blocked by the browser. It tells us whether time is lost on the server, on the wire or in the client, request by request. Do not worry about its size; use the upload link we give you if it does not fit in the ticket. |
3.8 Log files
STARLIMS writes system logs, user logs and many temporary files. Their size and content tell us about the health of the system, and too many of them slow the server down. On the application server (and the batch server if separate) and SDMS server report for each folder below: total size, number of files, oldest file, and the five largest files.
-
<application path>\Logand<application path>\Log\Users - SDMS:
<SDMS site>\Logfiles
| What we ask | Why |
|---|---|
The folder statistics above, plus: attach the last 2 weeks of \Log and \Log\Users as a zip via the upload link. |
Repeated warnings such as “Performance warning: try not to use complex expressions in SqlExecute”, license errors, authentication failures or debug output written on every call are direct performance clues. Gigabytes of (user) logs point at logging left on or missing cleanup. |
3.9 Other load on the database and customizations
STARLIMS is often not the only user of its own database, and not the only code running in it. Please answer each point with yes/no and, where yes, what, how often and when (time of day).
| What we ask | Why |
|---|---|
| Other readers of the production database: replication, log shipping, Always On readable secondaries, CDC or Change Tracking; BI or reporting tools (Power BI, Tableau, Qlik, SAP BO, Spotfire…) with live connections or scheduled extracts; ETL/SSIS packages, linked-server queries or scripts copying data to a warehouse; large CSV/Excel/regulatory exports; monitoring or audit tools querying the database; Excel sheets with live ODBC connections. Do these run against production or against a copy? | Long reads hold locks on the tables STARLIMS needs and push STARLIMS data out of memory. In several tickets a warehouse extract or a monitoring collector was the main cause of slowness in the lab. Reporting belongs on a readable secondary, a replica or a restored copy. |
| Customizations in the database: triggers on STARLIMS tables (e.g. history or audit copies), custom indexes, custom tables or schemas, SQL Agent jobs or scheduled scripts that touch STARLIMS data. | Triggers multiply every write; custom jobs compete with users. We need to know what is ours and what is yours before we judge a slow query. |
| Interfaces and polling: instrument, ERP/SAP/MES or other interfaces, how they poll (interval), and any Windows scheduled tasks on the application or batch server related to STARLIMS. | A polling script running every few seconds can be the busiest “user” of the system. |
| Logging level: is debug or verbose logging enabled anywhere (STARLIMS user logs, interface logs, SDMS)? | Debug logging in production is a common and easily fixed cause of slow saves and growing disks. |
Outcome of chapter 3: together we should now know whether the slowness lives on the server/database, in the network or on the client, and whether background work (batch queue, interfaces, external readers) plays a part. We confirm this to you in the ticket and tell you which parts of chapter 4 we need.
4. Intake Questions; Getting some Data
5. Narrow down the Cause (by Support)
6. Intake Questions; Getting even more Data
7. Narrow down the Cause (by Support & DBA's)
8. Additional information (appendix)
Comments
0 comments
Article is closed for comments.