Hardware FixRecommendedDevice not working? Your driver may be the problemCheck updates for common hardware issues.Fix DriversHalloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsWindows FixRecommendedWindows errors stealing your time? Find the fix fastScan stability, cleanup and performance issues.Fix Now×
FREEDOM251

Freedom251 › Blog › Docker

How to troubleshoot slow or unreliable self-hosted apps

By Freedom251 Team · · 11 min read

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The fastest way to troubleshoot a slow or unreliable self-hosted app is to collect evidence at each boundary—request, reverse proxy, application, dependency, host, and network—then change one variable and repeat the same test. Start with a reproducible symptom, service status, recent logs, and a reachability check. This prevents a database problem being “fixed” with a proxy change, or a full disk being misdiagnosed as an application bug.

Commands and health-check behavior vary by product, operating system, container runtime, and version. The examples below are labeled for Docker Compose, systemd, Kubernetes, or a specific application; adapt service names, endpoints, and recovery steps to the software you actually run.

As an Amazon Associate I earn from qualifying purchases.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Build a symptom you can reproduce

“Slow” is not a diagnosis. Write down exactly what a user experiences and make the observation repeatable before restarting anything.

Describe the affected operation

  • Scope: Is the first page load slow, one action slow, streaming delayed, background jobs stuck, or every request affected?
  • Audience: Does it affect every user, one account, one geographic location, or only requests through a particular hostname?
  • Timing: When did it begin, and does it follow a release, configuration change, backup, migration, certificate renewal, traffic increase, or host reboot?
  • Failure mode: Record time to first byte, total response time, HTTP status, timeout text, disconnects, and whether a retry succeeds.

Choose one request or job that reliably demonstrates the problem. Record the timestamp, URL or operation, client location, authentication state, cache state, response code, and duration. A browser waterfall, an application request ID, or a command-line timing result can provide a useful reference. Repeat the same test after every change; otherwise an improvement may simply reflect a different workload or a warm cache.

#1 Best Overall
Sale
TOZO A1 Wireless Earbuds Bluetooth 5.3 Light Weight in Ear Headphones | IPX5 Waterproof,2 Mics for AI Calls,Immersive Premium Sound Bass Headset with Charging Case,32 EQ via App Black
  • [Ultra-Lightweight Ear Buds Designed for Small Ears] Each earbud weighs only 3.7g and features a compact, ergonomic in-ear design made especially for small ears. Secure, low-profile, and comfortable for workouts, all-day wear or overnight sleeping.The ultra-slim profile sits flush in your ear with no hard edges poking or rubbing, so you can even sleep on your side without discomfort.
  • [Immersive Stereo Sound with TOZO OrigX Technology] TOZO OrigX tuning delivers clear vocals, balanced mids, and natural stereo sound for music, podcasts, and videos.
  • [Long Battery Life for Daily Use] Get up to 7 hours of playtime on a single charge, with up to 32 hours total using the charging case—ideal for workdays, commuting, and extended listening sessions.
  • [Bluetooth 5.3 & Stable Connection] Bluetooth 5.3 provides fast pairing, stable wireless performance, and reduced dropouts as you move around home or office.
  • [Deep Bass with Clear Vocals] High-performance drivers produce punchy bass while keeping vocals clean and detailed for everyday listening.

Collect a small evidence bundle first

Before changing configuration, capture the service state, logs covering the incident window, and a direct reachability check. NetBird’s self-hosting troubleshooting guidance describes this sequence and notes that “Almost every self-hosted issue is faster to resolve with service status and logs in hand.” See its self-hosting troubleshooting guide for the product’s current service names and examples.

What to save

  • The exact reproduction time, request, response code, and measured duration.
  • Application, proxy, database, and operating-system logs from several minutes before and after the event.
  • Container or pod restarts, exit codes, health status, deployment events, and recent image or package versions.
  • CPU, memory, disk, network, and process observations taken during the slowdown rather than hours later.
  • Recent changes: commits, environment variables, certificates, DNS records, firewall rules, backups, and scheduled jobs.

Preserve the original logs before rotating or restarting a service. Redact credentials, cookies, tokens, private keys, and personal data before sharing an incident bundle.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Check whether the process is running—and what it says

A process can be alive while requests fail, and a container can be restarting while a dashboard briefly shows it as “up.” Check both the supervisor’s state and the application’s own messages.

Docker Compose example

For a Compose deployment, list service state and then follow the relevant service log:

  1. Run docker compose ps from the directory containing the deployed Compose file.
  2. Run docker compose logs --since=30m <service-name>, replacing <service-name> with the actual service name.
  3. For a live incident, use docker compose logs -f <service-name> and reproduce the request once.
  4. Record restart counts, exit status, health status, and whether errors coincide with the measured request.

NetBird’s documentation uses docker compose ps and docker compose logs -f netbird-server as product-specific examples. Its service names may differ by release and installation. Configuration, authentication, and migration errors often appear in service logs, so inspect those messages before changing resource limits.

systemd example

For a Linux service managed by systemd, replace the unit name with the one installed on your host:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #2
Sale
Smart Watch for Men Women Compatible with iPhone Samsung Android Phone 1.69 inch Full Touch Screen IP68 Waterproof Bluetooh Fitness Tracker Heart Rate/Sleep Monitor (Black)
  • 【IP68 Waterproof Multifunctinal Smart Watch】Torjalph fitness activity tracker smart watch is IP68 waterproof technology ,you can wear it when swimming,handwashing,it's rain-proof which means that you perform multiple exercise modes outside without worrying about sweat or rain corroding your fitness smart watch,and this watch equipped with a 230 mAh large capacity battery magnetic charging ,and this sports activity tracker watch can be used 5-7 days If fully charged.
  • 【Larger 1.83'' Full Screen Watch & Multi-dial Selection】1.83 inch full HD color touch screen smart watch for men / women provides excellent 240*284 resolution image quality ,This Bluetooth smart watch offers a better touch experience and remarkable immersion and ,more than 200 watch faces for you to choose from App"Da Fit ", you can change the dial style according to your mood to wear keeping the world on your wrist
  • 【Accurate Activity Tracker Smart Watch 】sports watch activity tracker uses sweat and dust resistant breathable silicone strap, our Fitness Tracker Smart Watch for Android iOS Phones supports 12 sports modes,walking,running,bicycle,swimming,badminton,basketball,football,rope skipping. This bluetooth calls smart watch for men women is lightweight and stylish, bringing more convenient and relaxing sports experience while also providing more protection.
  • 【Your 24 Hour Personal Daily Health Monitor】Fitness watch for women men full touch screen IP67 waterproof bluetooth smartwatch for Android iOS Phones with heart rate blood pressure monitor multifunction Andriod smart watch with steps counter sleep monitor sports fitness watch, monitoring blood oxygen saturation allows you to understand your physical condition in real time to track fitness progress ,to know your health status in time.
  • 【More Functions Bluetooth Call Smart Watch】This fitness activity smart watch full screen for iPhone and Android phones includes a bunch of new features including:The bluetooth smart watch can hang up the phone, receive and display WhatsAPP /Text /Facebook /Twitter /Messenger reminder.Support sedentary reminder, alarm clock, stopwatch, timer,weather information,music control, remote camera control compatible with Android 5.0 and above or iOS 9.0 and above smartphones.
  1. Check state with systemctl status <unit-name>.
  2. Read the recent journal with journalctl -u <unit-name> --since "30 minutes ago".
  3. Follow new entries while reproducing the issue with journalctl -u <unit-name> -f.
  4. Check the service’s documented diagnostic directory and retention policy.

GitHub’s self-hosted runner troubleshooting documentation demonstrates journal inspection and a runner-specific diagnostic log directory. Those commands and paths are for GitHub runners, not a generic application. Ephemeral runner deployments must forward and preserve logs elsewhere because the runner filesystem may disappear when the instance is replaced.

Interpret restarts carefully

A restart is a symptom, not proof that the application needed more memory. Correlate the restart timestamp with an out-of-memory event, failed health probe, host reboot, deployment, or administrator action. A crash loop can be caused by an invalid secret, a missing migration, an unavailable dependency, or a port conflict.

Test the application and reverse-proxy path separately

Users normally reach an app through DNS, TLS termination, a reverse proxy or ingress, and then the application. Test a safe local endpoint and the public hostname independently so you know which boundary adds the delay.

Direct test from the host

If the application listens on a local port, query its documented health or status endpoint from the host or an adjacent container. Use a request that does not mutate data. Capture status and timing, for example with the curl options supported by your environment. Avoid exposing an internal port to the internet merely to make this test.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Proxied test from the user path

Request the public HTTPS hostname through the normal reverse proxy and compare it with the direct result. NetBird documents requesting its API through the public domain to verify proxy-to-API reachability; see its troubleshooting page for the product-specific endpoint.

If the direct request succeeds but the proxied request fails or is slower, inspect, in order:

Rank #3
New Bee Guitar Cable 10ft Electric Instrument Bass AMP Cord | 6.35mm Jack, Durable Design, Stage and Home Studio Use, Low Noise Shielded Electric Cord for Bass, Keyboard, Amp, Mixer
  • [Low Noise High Fidelity] New bee guitar cord with 22AWG oxygen-free-copper center conductors provides enhanced signal transfer, the PVC insulation material and the high-density stranded copper double shield provide noise rejection for quiet operation
  • [Ideal for Choice] New bee 1/4 straight and right angle metal connectors, ensures a secure connection in any instrument, pedal, or amp jack. L shape great fro on stage guitar stands
  • [Wide Compatible] Suitable for mixer, power amplifier, microphone, effector, decoder, equalizer, electoronic organ, electric guitar, electric bass and other electronic equipments. Widely used in the installation of smart home, karaoke speaker, professional stage audio, etc
  • [Easy Disassemble] Making incidental repairs quick and easy! Very nice, flexible cable
  • [Dont Hesite to Order] 24 hours customer services and professional technology team are standing by
  • DNS resolution and whether different clients receive different addresses.
  • TLS certificate validity, protocol negotiation, and renewal history.
  • Proxy route matching, upstream address, port, and connection timeouts.
  • Proxy-to-application connectivity from the proxy’s network namespace.
  • Authentication middleware, request-size limits, buffering, compression, and WebSocket or streaming settings.
  • Load-balancer target health and whether only one backend is failing.

Compare client-to-proxy, proxy-to-application, and application-to-dependency timings where your logs expose them. Repeat each comparison with the same request, cache state, and workload. A single fast direct request does not prove that the public path is healthy for all users.

Use health checks without confusing liveness and readiness

A health endpoint answers a narrow question: can the process respond to this probe? It may not answer whether the app can query its database, reach an external API, or complete a real user operation.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Liveness versus dependency readiness

Microsoft’s ASP.NET Core health-check guidance explains that checks can test dependencies such as databases and external service endpoints. Use separate endpoints or check groups when the framework supports them:

  • Liveness: a cheap process check that confirms the application can accept work. It should not fail merely because a temporary dependency is unavailable.
  • Readiness: a dependency-aware check used to decide whether the instance should receive traffic.
  • Deep diagnostic check: an operator-only test that exercises additional dependencies or a representative operation without being used to trigger automatic restarts.

Orchestrators and load balancers may restart a container, stop a rollout, or remove an instance from service after a failed probe. Verify the exact semantics before changing probe intervals, timeouts, or failure thresholds. A dependency check that is too broad can make a responsive app appear dead; a liveness-only check can leave a broken database hidden.

Product-specific endpoint caveat

OpenProject warns that adding basic authentication to its /health_checks endpoint can break existing Docker Compose and Kubernetes container health services. This is an OpenProject-specific compatibility detail documented at its monitoring page, not a universal rule. Do not protect or rename a probe until you have checked how the deployed orchestrator calls it.

Correlate resource metrics with the exact slow period

Resource graphs are useful only when their timestamps line up with the symptom. Compare the affected interval with a normal baseline, the workload, and the limits imposed on the container or virtual machine.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #4
BSIMB 15.6" Digital Family Calendar & Chore Chart, No Subscription Fees
  • Digital Family Calendar: BSIMB digital calendar wall touch screen puts an end to your chaotic life. Designed for busy families, the digital calendar keeps you organised and in step with your family. Assign different colours and tasks to each family member to make family scheduling easier and more intuitive.
  • Easy Setup and Auto-Sync: Plug in, connect to WLAN and auto-syn your electric calendar in minutes. Digital wall calendar compatible with Google calendar, iCloud calendar, Outlook calendar, Cozi calendar and Yahoo calendar. Add events directly on the device or through the ecalendar app. Electronic calendar stays current whether you're at work or traveling—no manual updates needed.
  • All-In-One Home Assistant: Smart calendar builds habits and encourage independence with personalised chores. Display daily meal plan to reduce the daily ‘What's for dinner?’ stress. To-do lists keep track of everything you want. Turning chores into valuable achievements with stars and rewards, making life easier and more enjoyable.
  • Manage Anytime Anywhere: BSIMB electronic calendar for family stay connected with the powerful ecalendar app. Access and manage your digital wall calendar anytime, anywhere with free features like stars & rewards, photo screensaver, chore charts, meals plans, to-do lists etc. Electronic planner paid features like Magic Import tailor advanced tools for users with special needs.
  • Stay in Touch with Loved Ones: Share photos or videos from your phone to electronic wall calendar with app, instantly update your life moment, and keep in touch with your family, especially those who are far away; you can also surprise your smart calendar digital wall by sending him a wish card; it's also great for keeping tech-illiterate elders in touch with the youngsters.

Signals to collect

Layer Signals What a correlation can suggest
Host CPU Utilization, load average, iowait, and virtual-machine steal time Compute contention, storage waits, or noisy-neighbor effects
Memory Used memory, working set, swap activity, OOM events, and process growth Leaks, cache pressure, limits being hit, or reclaim activity
Storage Free capacity, read/write throughput, latency, and filesystem errors Full volumes, slow disks, blocked writes, or database pressure
Network Throughput, errors, drops, retransmits, and connection counts Link saturation, packet problems, or connection-pool exhaustion
Containers or pods Per-workload CPU, memory, restarts, throttling, and network use One workload consuming a disproportionate share

Kubernetes v1.37 defines container_cpu_usage_seconds_total as cumulative container CPU time measured in core-seconds and container_memory_working_set_bytes as current working-set memory. Its metrics reference also documents node CPU and working-set memory metrics. Use the metric definitions, not just dashboard labels, when calculating rates or comparing pods.

Watchflare’s self-hosted monitoring documentation lists host CPU—including iowait and virtual-machine steal—memory, disk usage and read/write throughput, network bandwidth, temperature, load average, and optional Docker or Podman per-container CPU, memory, and network metrics. That page describes the product’s coverage; it is not an independent performance evaluation.

Do not apply a universal threshold

No single CPU percentage, memory level, disk-usage percentage, or latency value identifies failure for every self-hosted app. A CPU-bound video job, an idle database, and a latency-sensitive API have different normal ranges. Treat a metric as a clue and ask whether it changed at the same time as the request, exceeded the workload’s established baseline, or collided with a configured limit.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Inspect application and dependency bottlenecks

Once the host and network path look healthy, move inward. Application instrumentation can show which route, query, queue, or external call consumed the time; a host dashboard usually cannot.

Request and worker timing

  • Break total latency into queue wait, application processing, database time, external calls, and response transmission when the framework exposes those spans.
  • Check worker counts, event-loop lag, thread-pool starvation, connection-pool usage, and queued jobs.
  • Look for errors that trigger retries. A retry storm can make a healthy dependency appear slow.
  • Compare slow requests with ordinary requests using the same route and payload size.

Database and queue behavior

Inspect active connections, lock waits, queue depth, transaction duration, and slow-query facilities provided by your database or application. SurrealDB’s self-hosted monitoring documentation describes metrics and, for Enterprise editions, threshold-based slow-query logging. Availability and configuration depend on the edition, so do not assume that an Enterprise-only feature exists in a community installation.

For any database, verify that a suspected query is actually present in the slow period and that an index, lock, or connection limit explains the delay. Do not add indexes, raise limits, or terminate sessions without checking the application’s supported procedure and data-safety implications.

Streaming, compression, and caching

Open WebUI’s performance troubleshooting guide gives a product-specific example: high-frequency token streaming increases network I/O and server CPU, while response compression and static-asset caching can shift work between the application and proxy. Its profiling discussion estimates that compression middleware used roughly 3–4% of worker CPU time in production deployments. That figure is an Open WebUI example, not a general server benchmark.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Measure the affected path before changing buffering, compression, or cache headers. Disabling compression may reduce CPU while increasing bandwidth; buffering may improve throughput for ordinary responses but damage interactive streaming; caching can reduce origin work while creating stale-content or invalidation problems. Apply the setting at the layer that owns the behavior and verify both normal and streaming requests afterward.

Choose monitoring that answers your actual question

Persistent monitoring is valuable when you need to see a problem between incidents, but select it by coverage and operating cost rather than by a dashboard screenshot. Keep monitoring independent of the application host when losing that host would otherwise erase the evidence.

Decision axis Questions to ask
Coverage Does it monitor the host, containers or pods, processes, endpoints, dependencies, and certificate expiry?
Alerts Can it alert on failed checks, restarts, resource limits, latency, and error rates without flooding you?
History How much metric and log retention is needed to compare weekly jobs, backups, and releases?
Overhead What CPU, memory, disk, and network use does the agent add to a small host?
Deployment Is the agent compatible with the operating system, container runtime, and orchestration model?
Independence Are alerts and stored data available if the monitored machine, disk, or network path fails?

A general host dashboard can reveal pressure, but it usually cannot identify the request or query that consumed the time. Pair infrastructure metrics with application logs, request timing, and dependency metrics. The Kubernetes metric definitions and the application-specific guidance for NetBird and Open WebUI illustrate why both levels are needed.

Change one variable, then verify

Once you have a plausible cause, make the smallest reversible change that tests it. Write down the original value, the reason for the change, and the exact measurement you expect to move.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  1. Capture a baseline using the reproducible request, relevant logs, and resource readings.
  2. Change one setting or component. Avoid simultaneously upgrading the app, changing the proxy, and resizing the host.
  3. Repeat the same request under a comparable workload and cache state.
  4. Check error rate, latency, resource use, restarts, and dependency behavior—not only the metric you expected to improve.
  5. Keep the change only if the result is sustained and does not create a new failure mode; otherwise revert it.

If the issue began after a release or configuration change, compare versions and use the project’s supported rollback procedure. Back up persistent data before migrations, repairs, or storage changes. Never treat deleting a volume, rebuilding a database, or purging a queue as a routine troubleshooting step without a tested recovery path.

Use symptom-to-layer checks

Observed symptom First comparisons Next place to look
Local endpoint is fast; public hostname times out DNS, TLS, proxy route, upstream connection, and proxy logs Reverse proxy or load balancer configuration
Every request slows during backups Disk latency, iowait, throughput, and database lock or checkpoint activity Storage scheduling and database behavior
Only streaming responses lag First-byte time, flush intervals, buffering, compression, and network throughput Application streaming path and proxy protocol settings
Container repeatedly restarts Probe results, exit code, OOM events, and logs immediately before restart Probe semantics, memory limits, configuration, or dependency startup
One route is slow while others are normal Route-level timing, query logs, payload size, and external calls Application code, database query, or a route-specific dependency
Only one region or client network fails DNS answers, packet loss, TLS negotiation, and proxy access logs by source Network path, DNS, firewall, or edge configuration

These comparisons narrow the search; they do not prove causation by themselves. Continue until a timestamped metric, log entry, or controlled change explains the observed behavior.

Turn the investigation into a repeatable runbook

Document the checks that are safe for your deployment so the next incident does not begin from memory. A useful runbook contains:

  • The service, container, pod, unit, and proxy names for the current deployment.
  • Read-only commands for status, logs, health endpoints, and resource inspection.
  • Which endpoints are liveness, readiness, and operator-only diagnostics.
  • Normal latency, error-rate, resource, and restart baselines for important workloads.
  • Where logs and metrics are retained if the host is offline or rebuilt.
  • Rollback, backup, migration, and escalation procedures for each major component.
  • The date and version for every product-specific instruction, because labels and endpoints change.

Review the runbook after upgrades and test that the documented health checks, log paths, alerts, and backups still work. Reliable troubleshooting is less about finding a magic threshold than about preserving evidence and moving methodically from the user-visible symptom to the component that actually owns it.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

DockerKubernetesobservabilityreverse proxyself-hostingServer MonitoringTroubleshooting

Leave a Reply

Your email address will not be published. Required fields are marked *

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Recommended PC Tool
Recommended PC Tool
Outdated Drivers Are Slowing You DownFree scan - exact matches
PC Slower Than It Used to Be?Free scan - under a minute

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.