Troubleshooting
Identify and resolve bandwidth and latency issues, as well as HTTP 400 errors, on the centron and S3 Object Storage.
Bandwidth or latency issues
Narrowing down the problem
- Carry out a reference measurement – ideally from a centron cloud server and from the affected system, in order to distinguish between network and storage issues:
# Testdatei erzeugen und Upload/Download messen
dd if=/dev/urandom of=test1g.bin bs=1M count=1024
time aws s3 cp test1g.bin s3://mein-bucket/ --endpoint-url https://
time aws s3 cp s3://mein-bucket/test1g.bin ./download.bin --endpoint-url https://s3.internet1.de
- Check the network path:
ping s3.internet1.de
mtr --report s3.internet1.de # zeigt Paketverlust/Latenz pro Hop
- Check the status page: status-centron.de
Common causes and solutions
| Symptom | Cause | Solution |
|---|---|---|
| Individual stream slow, overall performance OK | Throughput per connection limited | Increase parallelism: use rclone --transfers 16, AWS CLI max_concurrent_requests, or multipart |
| Many small files extremely slow | Overhead per request dominates | Bundle files (tar/zip) or significantly increase parallelism (--checkers, --transfers) |
| High latency from a remote network | Long network path, peering | Compare measurements with the centron server; use a CDN if necessary |
| Fluctuating throughput at peak times | Local line/VPN at full capacity | Measure without VPN; check on-site bandwidth |
| Uploads of large files abort | Timeouts with single PUT | Use multipart upload (CLI/SDKs do this automatically above a threshold) |
AWS CLI Tuning (~/.aws/config):
[default]
s3 =
max_concurrent_requests = 20
multipart_threshold = 64MB
multipart_chunksize = 64MB
If the problem can be consistently isolated to the storage side (e.g. slow even when accessed from the centron server, with no message on the status page), please contact Support with the measurement values, the time of the issue, the bucket and the traceroute results.
HTTP 400 (Bad Request)
A 400 means: The server has rejected the request as invalid. The response body contains an XML error code that specifies the cause – check this first:
aws s3api get-object --bucket mein-bucket --key test.txt out.txt \
--endpoint-url https://s3.internet1.de --debug 2>&1 | grep -A5 "<Error>"
Common error codes
| Error code | Cause | Solution |
|---|---|---|
InvalidBucketName | Bucket name violates naming rules (capital letters, underscores, too short/long) | Adhere to naming rules: 3–63 characters, lower-case letters/numbers/hyphens |
AuthorizationHeaderMalformed | Incorrect region in the signature | Set the region (CLI configuration, SDK parameter) |
RequestTimeTooSkewed | System clock is more than 15 minutes off | Synchronise time via NTP (timedatectl, chronyc) |
InvalidArgument | Invalid parameter/header (e.g. incorrect metadata, incorrect SSE-C headers) | Check request parameters; for SSE-C, send all three headers including the correct Key-MD5 |
EntityTooLarge / EntityTooSmall | Part or object size outside limits | Adjust multipart chunk size (typically: 5 MB–5 GB per part) |
KeyTooLongError | Object key too long (max. 1024 bytes) | Use a shorter key |
IncompleteBody | Transfer aborted, Content-Length not met | Check the network, repeat the upload |
InvalidRequest on Object Lock calls | Object Lock not enabled on the bucket | Create a new bucket with Object Lock (cannot be enabled retrospectively) |
BadDigest | MD5/checksum does not match the content | Check the file/transfer, upload again |
Further testing steps
- Is the endpoint correct?
https://s3.internet1.de– Typing errors or a missinghttps://will result in signature or connection errors. - Addressing style: In special cases, force path-style (SDK options
forcePathStyle/use_path_style_endpoint). - Is the tool up to date? Outdated clients may send incompatible signatures – update to the latest version.
- Unsupported action? Some AWS special functions are not available here – see Supported S3 Actions.
If the error remains unclear: make a note of the Request ID from the error response (<RequestId>) and send it, along with the timestamp, to Support – this will enable the enquiry to be traced on the server side.