Setup Check: Discover Hidden HTTP/WebDAV Limits and Performance Regressions
Nobody has claimed this yet.
- Dominant language
- PHP
- Stars
- 36.9k
- Forks
- 5.2k
- Avg merge
- 2d 3h
- Merged PRs (30d)
- 713
Description
[!TIP]
Like this idea?
- Please use the đ reaction to show that you are interested in the same feature/suggestion.
- Subscribe to the Issue to receive notifications regarding status changes, design discussion, and new comments.
- Comment if you have something relevant to add in terms of implementing this possible improvement/enhancement such as: how it might work, scope, obstacles, or potential solutions (please avoid commenting just to say "Me too!" â that's what the đ is for â and keeps the Issue clear of extra noise for everyone subscribed to it).
Is your feature request related to a problem? Please describe.
Administrators often lack clear, actionable visibility into the effective (real-world) constraints of their Nextcloud deployment:
- Practical maximum upload size (nonâchunked vs chunked).
- Hidden timeout ceilings (web server, reverse proxy, PHP/FPM, network).
- Effective throughput (upload / download bit rates per connection).
- Behavior and correctness of chunked uploads and HTTP range requests.
- Maximum feasible assembled upload size given timeouts + chunk sizing.
- Whether current performance diverges from historical baselines.
Without systematic measurement:
- Issues surface reactively (user complaints, failed large transfers).
- Itâs unclear which layer (client, proxy, PHP/FPM, storage backend) is constraining performance.
- Administrators lack a repeatable diagnostic tool to communicate health or guide configuration tuning.
Describe the solution you'd like
Introduce one or more Setup Checks that can:
- Run an automated sequence of controlled WebDAV operations (upload/download tests, range requests, chunked vs nonâchunked uploads).
- Determine or estimate:
- Max nonâchunked upload size before rejection (status codes / early termination).
- Largest reliable chunk size for chunked uploads.
- Time to assemble a multiâchunk file before any timeout occurs.
- Effective upload throughput (sustained bit rate) over a representative interval.
- Effective download throughput (sustained bit rate).
- Functional status of HTTP Range (partial download) support.
- Derived maximum feasible upload size (given chunk size Ă assembly / timeout constraints).
- Derived practical maximum download size within typical timeout envelopes.
- Optionally store historical snapshots (baseline vs current) for trend comparison.
- Provide actionable, humanâreadable guidance (e.g., âPHP
max_execution_timelikely limiting multiâGB assemblyâ or âReverse proxy body size limit reached at X MBâ or whatever). - Expose results:
- Admin UI (setup checks / serverinfo).
- OCC command (scriptable / monitoring integration).
- Optional userâlevel simplified check (e.g., âTest my connectionâ) for selfâdiagnostics and support triage.
Describe alternatives you've considered
- Manual ad hoc testing (slow, non-repeatable).
- Custom external scripting (reinvents logic; no UI integration).
- Rely only on logs + guessing (reactive and incomplete).
- Thirdâparty synthetic monitoring (generic; lacks Nextcloud-specific semantics).
- Indirect tests such as simple third-party hosted speed testers (not instance specific; too generic)
Additional context
Initial implementation:
- Tests: nonâchunked max size probe (binary search), chunk size probe, short-duration upload/download throughput sampling, Range request verification, assembly timeout detection (bounded attempt).
- Packaging: either integrate as a general setup check or provide as an on-demand task within the Server Info app (Optionally the latter could expose the former for easier monitoring)
- Result formatting: JSON (for API) plus a summarized UI view.
- Basic recommendations mapped from findings (e.g., if failure at N MB + HTTP 413 â suggest checking
client_max_body_size/LimitRequestBody/post_max_sizeor whatever).
Future extensions:
- Scheduled periodic runs with retention (e.g. last 30 data points).
- User-facing micro test (a more limited subset of tests and guardrails)
Risks / Considerations
- Test traffic overhead (cap test duration and data volumes).
- Privacy / data locality (use generated dummy data; never touch user files).
- Potential false positives if run during resource contention (recommend a âquiet windowâ or multiple samples).
- Multiâtenant / large installations may need adjustable limits (configurable ceilings).
- Flag to disable, limit data volume, or require explicit confirmation for low-resource installations.
Related:
- #53526
Documentation integration:
- Server Tuning
- Large File Uploading
- HTTP Server Configuration
- Reverse Proxy Configuration
- PHP Configuration
- Client configuration
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up â it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
No implementation files or tests are named. Start by reviewing the existing setup checks or Server Info app and related issue #53526, then narrow the broad proposal to a bounded initial implementation. Done should include the listed WebDAV measurements, JSON results, summarized UI output, and basic recommendations.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- php
- Domain
- backend, devops, performance
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100