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.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

To find a CPU hotspot in a Cloudflare Worker, profile representative requests in Wrangler DevTools, identify the functions that dominate CPU time, change the work they perform, and profile again with comparable traffic and data. If the problem only happens in production, use Cloudflare’s production profiler on an active deployed Worker or Durable Object. First distinguish CPU time from response duration: time spent waiting for a network request, KV, or a database can make a request slow without consuming Worker CPU.

What is a CPU hotspot in a Cloudflare Worker?

A CPU hotspot is code that accounts for a disproportionate amount of a Worker’s active execution time. It might be a frequently called function, a loop that does unnecessary work, or parsing that becomes costly for large inputs. The profile—not the function’s name or the fact that a request feels slow—should determine where you investigate.

CPU time and elapsed response time are different measurements. CPU time measures how long the CPU spends executing Worker code; wall time is the total elapsed time, including waits and I/O. A request that waits on fetch(), KV, or a database may have high wall time and relatively little CPU time. Cloudflare describes this distinction in its Workers limits documentation.

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

That distinction changes the next step. If CPU time is high, profile the code that runs. If wall time is high but CPU time is low, investigate waiting and I/O rather than trying to optimize an unrelated JavaScript function. Workers Logs expose CPU and wall time; Tail Workers and Logpush expose them in trace events.

#1 Best Overall
Sale
Compressed Air Duster,130000RPM Super Power Cordless Air Duster,Rechargeable Brushless Blower,3 Gear Adjustable Blower with LED Light,Dust Remover for Computer/House/Outdoor/Car
  • Powerful Turbo Fan:CAGIWIRU Electric Air Duster have reached speed up to 130000RPM,Can efficient remove dust and debris.With LED light and Three Adjustable Speed to meet with different cleaning tasks.
  • With Attached USB C Fasting Charging cable.Charing 3 hours,Enjoy up to 240 minutes of use on the lowest setting, For third speed can use for 25mins.with four charging options to meet with your needs.
  • Wide Application: attached 5 different nozzles,making it suitable for a variety of scenes, such as car,pet, pc, keyboards, and other electronic devices. It also serves for office and home clean duster.
  • Handy Design & Portable:Cordless air duster electric nozzle is Light weight and small size, design and comfortable to hold and space saving, convenient to carry around. You can put it in your room or inside the car without taking up space.
  • Economical &Reusable: Built durable materials with a long-lasting battery,our CAGIWIRU air duster it's a sustainable alternative to disposable air cans.

How do I find a hotspot locally with Wrangler DevTools?

Start with a local profile when you can reproduce the behavior. A useful capture requires requests that exercise the suspected route and resemble the traffic and data that trigger the issue; a profile of an idle Worker or an unrelated endpoint will not answer the question.

  1. From your Worker project, run wrangler dev.

  2. Press D in the terminal to open DevTools, then select Profiler.

  3. Select Start and send requests that exercise the behavior you want to investigate. Include the relevant routes, representative request volume, and realistic data.

    Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  4. Select Stop when the requests have completed. Inspect the CPU profile and use its timeline to focus on a request before examining the function frames.

  5. Use the call tree or Heavy (Bottom Up) view to find functions that account for substantial CPU work. Select a frame to navigate toward the corresponding source, then inspect what the function does and how often it runs.

  6. Make one targeted change, repeat the capture with comparable requests, and check whether the work identified in the original profile has decreased.

Local behavior is only as representative as the reproduction. Cloudflare notes that production behavior can be difficult to recreate locally. Match the request mix and data as closely as practical; remote bindings can help make local data more like production data. If the profile changes substantially when the workload changes, treat the workload as part of the finding rather than assuming one function is universally expensive.

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

How should I read the function frames?

Follow the expensive work from the profile into the source rather than treating a function’s total time as proof that its own code is the cause. A function may take a large share of time because it calls other costly functions, because it is invoked repeatedly, or because its own operations are expensive. Use the call tree and the profile’s alternative bottom-up view to trace where the time is attributed, then consider both the function and the work it triggers.

Cloudflare’s example profile shows moreAddition at 2.2 ms and addNumbers at 0.3 ms, with garbage collection also taking a substantial share in that illustrative capture. Those are example-profile values, not expected performance figures or a benchmark for other Workers. Your own profile should guide which frames merit investigation.

When interpreting a frame, distinguish self time from total time. Self time excludes work done by descendant calls; total time includes it. A function with high total time but comparatively low self time may be an expensive caller rather than the place where the costly operation occurs. Conversely, high self time can point toward work performed directly in that function. Use the call tree and Heavy (Bottom Up) view together to narrow the source, then confirm the finding against the relevant code path and workload.

Rank #2
EVEO® Screen Cleaner Spray Kit (Streak-Free) TV Screen Cleaner for Smart TV, Lcd, LEd, Oled | Computer Screen Cleaner Spray and Wipe Microfiber Cloth - TV, Monitor, Laptop, iPad, Car - 6.7oz 1 Pack
  • Screen Cleaner is Your Screen’s New Bestfriend! - EVEO is proud to present a screen cleaner that’s perfectly suited for your TV. Meet your new screen cleaner, computer screen cleaner, laptop cleaner, iPad cleaner, Macbook,tv cleaner or any other electronic device. Our screen cleaner spray and wipe along with the included plush microfiber cloth, easily removes dust, fingerprints & other smudges on the screen’s surface. Clean effectively for a streak-free screen
  • Gentle on your Screens - Our screen cleaner spray and wipes is compatible to be used even for the most sensitive LCD, LED, CRT, and OLED screens in proper use. Be at ease knowing that this product is compatible with all the major brands: LG, SONY, Samsung, Sharp, iPad, iPhone, Android screens, Kindle, PC monitors - we’ve got you covered! Can be used as LCD screen cleaner, tv cleaner, smart tv screen cleaner, and more
  • Premium Super Soft Plush Microfiber Cloth - Included in this efficient screen cleaning kit. This screen cleaner spray and wipe has our signature plush microfiber cloth specially designed to comply with screens and monitors and leave them streak-free. Has been shown to effectively absorbs stubborn stains, zero streaks, and no fiber shedding. Always use this together with our screen cleaner for the best results
  • Easy-to-Use Screen Cleaner Kit + microfiber cleaning cloth - The EVEO Screen Cleaning Kit will easily be your new favorite tool when it comes to taking care of the things you love most, quick and easy solution for a streak-free screen. Simply screw on the sprayer gun on the screen cleaner bottle. Spray the cleaning liquid onto the microfiber cloth, then wipe the screen until desired cleanliness & shine is achieved.
  • Quality Screen Care Kit Worth Purchasing - Enjoy a convenient Screen Cleaner anytime, anywhere you need it. Your satisfaction is our top priority. We stand behind the quality of our products and that’s why, you shouldn’t be worrying at all. We manufacture the Best Screen Cleaner. and can be used for laptop cleaning kit, laptop screen cleaner, tv screen cleaner for smart tv. MacBook screen cleaner, monitor cleaner or screen cleaner spray for electronic devices with microfiber cleaning cloth

When should I profile a deployed Worker instead?

Use production profiling when the local workload does not reproduce the CPU behavior or when you need evidence from a deployed Worker or Durable Object. Cloudflare supports CPU profiles, which show function CPU, and heap profiles, which sample allocations, through the dashboard, CLI, or API. The target must be receiving traffic and have a recently active, loaded isolate.

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

Choose the profile type to match the question. A CPU profile helps locate functions consuming CPU. A heap profile is useful when allocation behavior or memory pressure is suspected, but it samples allocations rather than showing which objects remain live. Cloudflare’s production profiling guide documents the available capture paths and requirements.

When selecting a version for a CLI capture, verify that the identifier corresponds to the version that is actually running. The special value latest means the most recently created version; it is not necessarily the deployed or running version. A profile from the wrong version can be internally valid but irrelevant to the behavior you are debugging.

Production capture depends on activity: send representative requests to the selected target so its isolate is loaded and receiving traffic. If you cannot reproduce the issue locally, plan the capture around the real routes and data that trigger it. Do not assume a capture of an idle target will reveal the code responsible for a traffic-dependent hotspot.

For CLI captures, the duration can be configured from 1,000 to 50,000 milliseconds. Production captures are rate-limited. If a capture request returns 429, wait before retrying and follow the Retry-After header when it is present. This is a capture constraint, not evidence that the Worker itself has a CPU problem.

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

A production flamegraph is a representation of the captured profile, not a clock-based timeline. Frame width is proportional to CPU time in a CPU profile or allocated memory in a heap profile. A wider frame therefore indicates a greater share of the profiled quantity, not that the frame happened later in the request. For a heap profile, Cloudflare samples stack traces every 512 kB allocated; this can help reveal where allocations are occurring, but it does not establish that the allocated objects remain live.

How can I tell whether the problem is CPU, I/O, or startup work?

Compare CPU time with total elapsed request time before changing code. A large gap points toward time spent waiting, while high CPU time points toward active execution. Logs and trace events provide the CPU and wall-time measurements needed to make that first distinction.

  • High CPU time: use a CPU profile to identify the expensive function work and test a code or execution-shape change.

  • High wall time with much lower CPU time: investigate the request’s waits and I/O, such as network, KV, or database operations; a CPU optimization may not address the delay.

    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.
  • Failure during startup: inspect top-level initialization and bundle work separately from per-request hotspots. Cloudflare documents a one-second startup CPU limit and recommends moving expensive initialization out of global scope or to build time.

    Rank #3
    Sale
    BladeHawks RGB Gaming Mouse Pad Extra Large Extended 31.5x12 Inch-Black | LED mouse pad with 14 lighting modes, covers keyboard & mouse, anti-slip rubber base, waterproof surface, USB powered
    • 【Large size】:Measuring 800 x 300 mm/ 31. 5×12 inches, which is wider and taller than others. Large mouse pad can perfectly fit your keyboard and mouse of any size, and there is also ample space for peripherals such as phones, tablets, etc.
    • 【LED backlight mouse pad】:Blade Hawks RGB mouse pad provides 7 static modes and 7 dynamic modes will give you the options you are looking for. Power-off memory function remembers the last lighting mode you selected. The super glow fiber Chroma will give you a colorful gaming setup that you want.
    • 【Anti-slip rubber base】:Made from Natural rubber, this gaming mousepad will firmly grip your desktop, allowing you to enjoy the ultimate precision in the games you are most passionate about. It also comes with a texture that enhances this ability even further.
    • 【Smooth and waterproof surface】: Micro-textured cloth surface, for extremely precise mouse control and a smooth movement. When liquid splashes on the gaming mouse pad, it forms water droplets and slides down. Will not delay your work or gameplay.
    • 【Plug and play】: This mouse and keyboard pad is powered by USB, plug and play, no driver required. One button control light modes. Press one time to change the lighting mode, press twice to change the brightness, press and hold about 3 seconds turn ON/OFF.
  • Repeated resource-limit errors: check the configured CPU limit and whether execution consistently exceeds it. Cloudflare documents Error 1102 as one possible result of exceeding resource limits.

Production timers require particular care. In Workers, timers such as performance.now() only advance after I/O for security reasons, which makes them difficult to use to measure individual function execution times in production. Prefer profiling and the platform’s CPU reporting for that diagnosis; see Cloudflare’s Performance and timers documentation.

Startup and request execution are separate questions. If the Worker fails before it can handle requests, measure and investigate top-level initialization or bundle-related work rather than assuming a hot route is responsible. Cloudflare documents a one-second startup CPU limit; moving expensive initialization out of global scope or doing it at build time are documented approaches to consider. For a request-time CPU issue, instead capture representative requests and inspect the request’s function work.

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

What should I change after the profile identifies expensive work?

Choose a fix that changes the measured work, and make the smallest change that addresses the profile. The right optimization depends on what the profile shows; an example fix is not a diagnosis for every application.

If repeated work or loops dominate

Check whether the code performs iterations it does not need. Cloudflare’s Error 1102 guidance gives reducing loop iterations as an example of addressing CPU-heavy work. Review the loop’s inputs and purpose, then remove unnecessary iterations without changing the required result.

If parsing dominates

Review how much data the Worker parses and whether the parsing strategy is doing avoidable work. Cloudflare gives optimizing JSON parsing as an example, but the profile should establish that parsing is actually a significant CPU consumer in your workload before you rewrite it.

If the computation is inherently substantial

Consider changing where or how the work is performed. Cloudflare’s limits guidance suggests moving substantial computation to Durable Objects or dividing data processing into smaller chunks across requests. These approaches change the execution shape; consider their effect on request behavior and application requirements before adopting them.

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

If the Worker is hitting its configured CPU ceiling

A higher CPU limit can be appropriate when a workload genuinely needs more execution time, but it raises the ceiling rather than identifying or removing a hotspot. Check the current platform configuration and operational need before changing it. Cloudflare documents a default of 30,000 ms for Paid-plan HTTP requests and a configurable limit up to 300,000 ms.

Cloudflare’s published limits as of October 2026 list a 10 ms CPU limit for Free-plan HTTP requests and up to 5 minutes for Paid-plan HTTP requests; the Paid-plan default is 30 seconds. These are platform limits, not performance targets for an individual Worker. Since limits and plan behavior can change, confirm the current values in the official limits documentation before changing a deployment configuration.

Use the limit as context for interpreting a profile, not as a substitute for one. Cloudflare reports average Worker use of approximately 2.2 ms per request, while heavier workloads such as authentication, server-side rendering, or large-payload parsing typically use 10–20 ms. Those figures describe broad published context, not a service-level goal for every route. A request can be healthy for its workload while exceeding an average, and a request below an average can still be slow if most of its elapsed time is spent waiting on I/O.

Rank #4
Sale
Vaydeer Wrist Rest for Keyboard and Mouse, Computer Ergonomic Wrist Support Pad, Soft Memory Foam Arm Cushion for Desk, Palm Hand Office Laptop Typing
  • 【Softer and More Comfortable】Vaydeer wrist rest has unique diamond pattern, which is the combination of softness and aesthetics. The materials of wrist rest are improved into higher quality memory foam and covered with silky smooth lycra. The computer wrist rest makes you as comfortable and cushiony as like rest your wrists on clouds.
  • 【Ergonomic Wrist Saver】The wrist rests for keyboard and mouse comes with a 17.32×3.15×0.83 inch keyboard wrist pad and a 5.94×3.15×0.83 inch mouse wrist support. Based on ergonomic design, the unique concave shape is the perfect fit for your wrist joints. The wrist rest pad fits most computer keyboards and laptops, improve hand and wrist posture, release your wrist and arm stress.
  • 【Non-Slip Rubber Bottom】Featuring an anti-skid silicone base on the bottom, this wrist keyboard support stays firmly in place on your desk, preventing the padding from sliding around, ensuring stable and consistent wrist support during extended computer sessions.
  • 【Better Experience & Pain Relief】Our keyboard arm rest is beneficial to alleviate the soreness caused by direct contact and friction between your arm and a hard desk surface, reducing the risk of wrist fatigue or carpal tunnel. The soft texture of memory foam can evenly distribute the pressure around your wrists and provide good support with just enough give.
  • 【Helpful in Multiple Scenarios】Whether you're working, studying, writing, typing, gaming, this keyboard and mouse rest combo is an essential accessory to add comfort and support to your hands and wrists. It’s also a great gift for men, women, family, friend, coworker, gamer, teacher, etc.

Consistently exceeding the configured limit can terminate execution according to that limit. Error 1102, “Worker exceeded resource limits,” can surface when a Worker exceeds CPU or other resource limits. The error tells you that a resource boundary was reached; by itself it does not point to a particular function. Use a profile to identify the work, then decide whether the appropriate response is to reduce it, change the execution shape, or raise a limit when the workload justifies that choice.

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

How do I verify that the fix worked?

Profile again after changing the code, using requests and data comparable to the original capture. Compare the CPU attributed to the relevant work and the overall request measurements; a smaller number from a different route, payload, or traffic mix is not a reliable before-and-after comparison.

  1. Repeat the original route and workload as closely as possible.

  2. Capture another profile and inspect the same function or work path identified before the change.

  3. Check whether CPU consumption fell and whether the request still produces the required result.

    Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  4. If the production symptom remains, capture production behavior on the active target rather than assuming a local improvement resolves a different production workload.

Local DevTools results can differ from production when requests or data differ. Production profiling also requires traffic to the selected running target, so validate both the target version and its activity before interpreting a capture.

Keep the comparison focused. If you changed a loop, check whether that loop’s contribution changed under the same inputs. If parsing was the focus, compare equivalent payloads. Also look at the whole request: a targeted optimization can reduce CPU without fixing a slow response if I/O remains dominant. Conversely, a request can have acceptable elapsed time while still approaching a configured CPU ceiling. The useful result is not just a smaller frame; it is a comparable profile, a correct response, and an understanding of how the change affects the actual symptom.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

What CPU figures are useful context—and what do they not tell me?

Cloudflare reports that an average Worker uses approximately 2.2 ms of CPU per request. It describes heavier workloads such as authentication, server-side rendering, or parsing large payloads as typically using 10–20 ms. These are platform-published context figures as of 2026, not a target that every Worker should match; the workload and configured limit matter.

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

Consistently exceeding the configured limit can terminate execution. Cloudflare’s Error 1102 guidance identifies “Worker exceeded resource limits” as a possible error when a Worker exceeds CPU or other resource limits. An error indicates that execution hit a limit, but it does not by itself identify the function or operation that consumed the CPU. Use profiling to find the cause, then decide whether the remedy is reducing work, changing how it is executed, or adjusting a limit when justified. See Cloudflare’s Error 1102 guidance.

Best Value
Sale
Under Desk Cable Management Tray No Drill, Metal Mesh Cable Management Under Desk with Clamp Mount, 2 Hole Cable Tray with Wire Management and Cord Organizer for Home Office Standing Desk
  • 【No Drill Mounted】Cable management tray can be assembled in as little as 3 minutes or less-simply. Side clips easily clampe the edge of desk, pass through the holes on the sides, and secure excess cables with baskets. Desk cable management supports inward or outward installation to meet your needs in different scenarios, and provides you with great convenience when collecting and organizing wires.
  • 【Rubber Pad Protects Desk】Wire organizer under desk built-in soft rubber pads on the clamp protect your desk from scratches, so you will not damage your furniture or office.
  • 【Sturdy and Beautiful】Cord management under desk is made of high-quality carbon steel and holds about 15 lbs. The wire basket has 2 holes on each side of the tray to enable your cables to pass freely. Cable baskets are suitable for desk thickness use from 0.4" to 2.4".
  • 【Space Saving & Keep Organized】Desk cable management tray holds all your power cords, outlet strips, USB hubs and computer transformers hidden from your feet, and the data cables will not enter the vacuum cleaner to keep your desk clean and tidy. Desk wire organizer is also suitable for use in the kitchen and outdoors.
  • 【Reduce Safety Risks】Cable tray under desk keeps all plugs away from your kids, no more worry about tripping. Using 2 holes wire tray saves extra space, helps you easily cabling and wire protection. The mesh design is not easy to accumulate dust, but avoids safety accidents caused by messy wires.

How do I choose between local and production profiling?

Use local profiling for a reproducible workload that you can exercise in DevTools; use production profiling when the behavior depends on production traffic or you need to inspect a deployed version. The choice also depends on whether you are diagnosing CPU use or allocation behavior.

Question Local Wrangler DevTools Production profiler
Where does the capture come from? Requests exercised while running wrangler dev. A deployed Worker or Durable Object selected for capture.
What must be true to make the capture useful? The routes, traffic, and data should represent the suspected behavior; remote bindings may help match production data. The selected target must receive traffic and have a recently active, loaded isolate.
When is it the better fit? When you can reproduce the behavior locally and want to iterate on a code change. When local reproduction is insufficient or the deployed version itself must be observed.
What profile types are available? CPU profile through DevTools Profiler. CPU profiles for function CPU and heap profiles for sampled allocations.

Neither approach replaces a representative workload. A local capture can mislead if its request mix or data differs from production; a production capture can miss the issue if the wrong version is selected or the isolate is not active. Treat the profile as evidence about the activity it actually captured.

In practice, use local DevTools when you can create a faithful reproduction and want to iterate quickly on code. Move to production profiling when the issue depends on deployed behavior, traffic, or data you cannot reproduce locally. For CPU consumption, capture a CPU profile; for suspected allocation behavior, use a heap profile and remember that allocation samples are not a measure of retained memory. In either setting, compare similar activity and verify which version and isolate the capture represents.

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

Frequently Asked Questions

How long can a Cloudflare Workers production profile capture run?

The CLI capture duration is configurable from 1,000 to 50,000 milliseconds. Production captures are rate-limited; if a request returns 429, wait and follow the Retry-After header when one is present.

What does the width of a production profiler flamegraph mean?

Frame width is proportional to CPU time in a CPU profile or allocated memory in a heap profile. It is not a timeline, so a wider frame does not mean the work happened later or lasted longer on a clock.

What is the difference between self time and total time in a profile?

Self time excludes time spent in descendant calls, while total time includes it. Looking at both can help separate work performed by a function itself from work performed by functions it calls.

Does a heap profile show which memory is still in use?

No. Cloudflare’s heap profile samples stack traces every 512 kB allocated, so it describes sampled allocations rather than retained or live memory.

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

Does high response time mean a Worker has a CPU hotspot?

Not necessarily. CPU time measures active execution, while wall time includes waits and I/O such as fetch(), KV, or database operations. Compare CPU and wall time first; if wall time is high but CPU time is low, investigate the waiting work.

Why does the CLI value latest sometimes profile the wrong Worker version?

In the CLI, latest selects the most recently created version, which may not be the version currently deployed or running. Verify the version identifier for the target you intend to inspect.

Can I use performance.now() to time a function in a deployed Worker?

Cloudflare documents that timers such as performance.now() only advance after I/O in Workers for security reasons. That makes individual function timing difficult in production; use profiling and platform CPU reporting instead.

What should I do if a production profiling request returns 429?

Production captures are rate-limited. Wait before retrying and follow the Retry-After header when one is present.

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

The Bottom Line

Start by comparing CPU and wall time, then profile representative requests in Wrangler DevTools or on an active production target. Use the profile to identify the expensive work, make a targeted change, and compare again with similar traffic and data. A higher CPU limit may be appropriate for genuinely substantial work, but it raises the ceiling rather than fixing a hotspot.

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.