{"id":18140852,"url":"https://github.com/gui/trafficserver-debugging","last_synced_at":"2026-03-19T03:19:08.317Z","repository":{"id":206452474,"uuid":"689803206","full_name":"GUI/trafficserver-debugging","owner":"GUI","description":null,"archived":false,"fork":false,"pushed_at":"2024-04-17T15:19:14.000Z","size":7,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-12T23:44:25.000Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Roff","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GUI.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2023-09-10T23:53:21.000Z","updated_at":"2023-09-16T10:45:38.000Z","dependencies_parsed_at":null,"dependency_job_id":"538abb6e-a2bf-4358-89b5-7cde1d82454e","html_url":"https://github.com/GUI/trafficserver-debugging","commit_stats":null,"previous_names":["gui/trafficserver-debugging"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GUI%2Ftrafficserver-debugging","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GUI%2Ftrafficserver-debugging/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GUI%2Ftrafficserver-debugging/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GUI%2Ftrafficserver-debugging/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GUI","download_url":"https://codeload.github.com/GUI/trafficserver-debugging/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247526675,"owners_count":20953141,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-01T16:07:08.985Z","updated_at":"2026-01-20T03:31:26.916Z","avatar_url":"https://github.com/GUI.png","language":"Roff","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Traffic Server Debugging\n\n1. Bring up nginx and Traffic Server containers:\n\n    ```sh\n    docker compose up\n    ```\n\n2. Generate a ~15MB file to use as the request body:\n\n    ```sh\n    base64 /dev/urandom | head -c 15000000 \u003e body.txt\n    ```\n\n3. Test against `[nginx proxy] =\u003e [trafficserver 9.1.4] =\u003e [nginx server]`:\n\n    ```sh\n    for i in {1..20}; do curl -v -d @body.txt -H \"Expect:\" -X PUT \"http://localhost:8914/?i=$i\"; done\n    ```\n\n4. Test against `[nginx proxy] =\u003e [trafficserver 9.2.0] =\u003e [nginx server]`:\n\n    ```sh\n    for i in {1..20}; do curl -v -d @body.txt -H \"Expect:\" -X PUT \"http://localhost:8920/?i=$i\"; done\n    ```\n\n5. Test against `[nginx proxy] =\u003e [trafficserver 9.2.2] =\u003e [nginx server]`:\n\n    ```sh\n    for i in {1..20}; do curl -v -d @body.txt -H \"Expect:\" -X PUT \"http://localhost:8922/?i=$i\"; done\n    ```\n\n6. Test against `[nginx proxy] =\u003e [trafficserver 9.2.3] =\u003e [nginx server]`:\n\n    ```sh\n    for i in {1..20}; do curl -v -d @body.txt -H \"Expect:\" -X PUT \"http://localhost:8923/?i=$i\"; done\n    ```\n\n7. Test against `[nginx proxy] =\u003e [trafficserver 9.2.4] =\u003e [nginx server]`:\n\n    ```sh\n    for i in {1..20}; do curl -v -d @body.txt -H \"Expect:\" -X PUT \"http://localhost:8924/?i=$i\"; done\n    ```\n\n## Expected Behavior: Traffic Server 9.1.4\n\nUnder Traffic Server 9.1.4, all of the responses received back are the `413 Request Entity Too Large` error generated by the underlying nginx server. This is the expected behavior.\n\n```\n*   Trying 127.0.0.1:8914...\n* Connected to localhost (127.0.0.1) port 8914 (#0)\n\u003e PUT /?i=1 HTTP/1.1\n\u003e Host: localhost:8914\n\u003e User-Agent: curl/8.1.2\n\u003e Accept: */*\n\u003e Content-Length: 15000000\n\u003e Content-Type: application/x-www-form-urlencoded\n\u003e\n* We are completely uploaded and fine\n\u003c HTTP/1.1 413 Request Entity Too Large\n\u003c Server: nginx/1.25.2\n\u003c Date: Sun, 10 Sep 2023 23:14:51 GMT\n\u003c Content-Type: text/html\n\u003c Content-Length: 183\n\u003c Connection: keep-alive\n\u003c Age: 0\n\u003c\n\u003chtml\u003e\n\u003chead\u003e\u003ctitle\u003e413 Request Entity Too Large\u003c/title\u003e\u003c/head\u003e\n\u003cbody\u003e\n\u003ccenter\u003e\u003ch1\u003e413 Request Entity Too Large\u003c/h1\u003e\u003c/center\u003e\n\u003chr\u003e\u003ccenter\u003enginx/1.25.2\u003c/center\u003e\n\u003c/body\u003e\n\u003c/html\u003e\n* Connection #0 to host localhost left intact\n*   Trying 127.0.0.1:8914...\n* Connected to localhost (127.0.0.1) port 8914 (#0)\n\u003e PUT /?i=2 HTTP/1.1\n\u003e Host: localhost:8914\n\u003e User-Agent: curl/8.1.2\n\u003e Accept: */*\n\u003e Content-Length: 15000000\n\u003e Content-Type: application/x-www-form-urlencoded\n\u003e\n* We are completely uploaded and fine\n\u003c HTTP/1.1 413 Request Entity Too Large\n\u003c Server: nginx/1.25.2\n\u003c Date: Sun, 10 Sep 2023 23:14:51 GMT\n\u003c Content-Type: text/html\n\u003c Content-Length: 183\n\u003c Connection: keep-alive\n\u003c Age: 0\n\u003c\n\u003chtml\u003e\n\u003chead\u003e\u003ctitle\u003e413 Request Entity Too Large\u003c/title\u003e\u003c/head\u003e\n\u003cbody\u003e\n\u003ccenter\u003e\u003ch1\u003e413 Request Entity Too Large\u003c/h1\u003e\u003c/center\u003e\n\u003chr\u003e\u003ccenter\u003enginx/1.25.2\u003c/center\u003e\n\u003c/body\u003e\n\u003c/html\u003e\n* Connection #0 to host localhost left intact\n*   Trying 127.0.0.1:8914...\n* Connected to localhost (127.0.0.1) port 8914 (#0)\n\u003e PUT /?i=3 HTTP/1.1\n\u003e Host: localhost:8914\n\u003e User-Agent: curl/8.1.2\n\u003e Accept: */*\n\u003e Content-Length: 15000000\n\u003e Content-Type: application/x-www-form-urlencoded\n\u003e\n* We are completely uploaded and fine\n\u003c HTTP/1.1 413 Request Entity Too Large\n\u003c Server: nginx/1.25.2\n\u003c Date: Sun, 10 Sep 2023 23:14:51 GMT\n\u003c Content-Type: text/html\n\u003c Content-Length: 183\n\u003c Connection: keep-alive\n\u003c Age: 0\n\u003c\n\u003chtml\u003e\n\u003chead\u003e\u003ctitle\u003e413 Request Entity Too Large\u003c/title\u003e\u003c/head\u003e\n\u003cbody\u003e\n\u003ccenter\u003e\u003ch1\u003e413 Request Entity Too Large\u003c/h1\u003e\u003c/center\u003e\n\u003chr\u003e\u003ccenter\u003enginx/1.25.2\u003c/center\u003e\n\u003c/body\u003e\n\u003c/html\u003e\n* Connection #0 to host localhost left intact\n*   Trying 127.0.0.1:8914...\n* Connected to localhost (127.0.0.1) port 8914 (#0)\n\u003e PUT /?i=4 HTTP/1.1\n\u003e Host: localhost:8914\n\u003e User-Agent: curl/8.1.2\n\u003e Accept: */*\n\u003e Content-Length: 15000000\n\u003e Content-Type: application/x-www-form-urlencoded\n\u003e\n* We are completely uploaded and fine\n\u003c HTTP/1.1 413 Request Entity Too Large\n\u003c Server: nginx/1.25.2\n\u003c Date: Sun, 10 Sep 2023 23:14:51 GMT\n\u003c Content-Type: text/html\n\u003c Content-Length: 183\n\u003c Connection: keep-alive\n\u003c Age: 0\n\u003c\n\u003chtml\u003e\n\u003chead\u003e\u003ctitle\u003e413 Request Entity Too Large\u003c/title\u003e\u003c/head\u003e\n\u003cbody\u003e\n\u003ccenter\u003e\u003ch1\u003e413 Request Entity Too Large\u003c/h1\u003e\u003c/center\u003e\n\u003chr\u003e\u003ccenter\u003enginx/1.25.2\u003c/center\u003e\n\u003c/body\u003e\n\u003c/html\u003e\n* Connection #0 to host localhost left intact\n*   Trying 127.0.0.1:8914...\n* Connected to localhost (127.0.0.1) port 8914 (#0)\n\u003e PUT /?i=5 HTTP/1.1\n\u003e Host: localhost:8914\n\u003e User-Agent: curl/8.1.2\n\u003e Accept: */*\n\u003e Content-Length: 15000000\n\u003e Content-Type: application/x-www-form-urlencoded\n\u003e\n* We are completely uploaded and fine\n\u003c HTTP/1.1 413 Request Entity Too Large\n\u003c Server: nginx/1.25.2\n\u003c Date: Sun, 10 Sep 2023 23:14:52 GMT\n\u003c Content-Type: text/html\n\u003c Content-Length: 183\n\u003c Connection: keep-alive\n\u003c Age: 0\n\u003c\n\u003chtml\u003e\n\u003chead\u003e\u003ctitle\u003e413 Request Entity Too Large\u003c/title\u003e\u003c/head\u003e\n\u003cbody\u003e\n\u003ccenter\u003e\u003ch1\u003e413 Request Entity Too Large\u003c/h1\u003e\u003c/center\u003e\n\u003chr\u003e\u003ccenter\u003enginx/1.25.2\u003c/center\u003e\n\u003c/body\u003e\n\u003c/html\u003e\n* Connection #0 to host localhost left intact\n```\n\n## Unexpected Behavior: Traffic Server 9.2.x\n\nIn both versions of Traffic Server 9.2.x, you'll sometimes get the expected `413 Request Entity Too Large` error back, but then a decent number of `502 Bad Gateway` errors will also be generated by the `nginx proxy` layer. The `nginx proxy` layer reports errors like the following (seemingly indicating that the connection to Traffic Server has been closed unexpectedly):\n\n```\nwritev() failed (104: Connection reset by peer) while sending request to upstream, client: 172.27.0.1, server: , request: \"PUT /?i=3 HTTP/1.1\", upstream: \"http://172.27.0.5:8080/?i=3\", host: \"localhost:8922\"\n```\n\n```\n*   Trying 127.0.0.1:8922...\n* Connected to localhost (127.0.0.1) port 8922 (#0)\n\u003e PUT /?i=1 HTTP/1.1\n\u003e Host: localhost:8922\n\u003e User-Agent: curl/8.1.2\n\u003e Accept: */*\n\u003e Content-Length: 15000000\n\u003e Content-Type: application/x-www-form-urlencoded\n\u003e \n* We are completely uploaded and fine\n\u003c HTTP/1.1 502 Bad Gateway\n\u003c Server: nginx/1.25.2\n\u003c Date: Sun, 10 Sep 2023 23:16:22 GMT\n\u003c Content-Type: text/html\n\u003c Content-Length: 157\n\u003c Connection: keep-alive\n\u003c \n\u003chtml\u003e\n\u003chead\u003e\u003ctitle\u003e502 Bad Gateway\u003c/title\u003e\u003c/head\u003e\n\u003cbody\u003e\n\u003ccenter\u003e\u003ch1\u003e502 Bad Gateway\u003c/h1\u003e\u003c/center\u003e\n\u003chr\u003e\u003ccenter\u003enginx/1.25.2\u003c/center\u003e\n\u003c/body\u003e\n\u003c/html\u003e\n* Connection #0 to host localhost left intact\n*   Trying 127.0.0.1:8922...\n* Connected to localhost (127.0.0.1) port 8922 (#0)\n\u003e PUT /?i=2 HTTP/1.1\n\u003e Host: localhost:8922\n\u003e User-Agent: curl/8.1.2\n\u003e Accept: */*\n\u003e Content-Length: 15000000\n\u003e Content-Type: application/x-www-form-urlencoded\n\u003e \n* We are completely uploaded and fine\n\u003c HTTP/1.1 413 Request Entity Too Large\n\u003c Server: nginx/1.25.2\n\u003c Date: Sun, 10 Sep 2023 23:16:23 GMT\n\u003c Content-Type: text/html\n\u003c Content-Length: 183\n\u003c Connection: keep-alive\n\u003c Age: 0\n\u003c \n\u003chtml\u003e\n\u003chead\u003e\u003ctitle\u003e413 Request Entity Too Large\u003c/title\u003e\u003c/head\u003e\n\u003cbody\u003e\n\u003ccenter\u003e\u003ch1\u003e413 Request Entity Too Large\u003c/h1\u003e\u003c/center\u003e\n\u003chr\u003e\u003ccenter\u003enginx/1.25.2\u003c/center\u003e\n\u003c/body\u003e\n\u003c/html\u003e\n* Connection #0 to host localhost left intact\n*   Trying 127.0.0.1:8922...\n* Connected to localhost (127.0.0.1) port 8922 (#0)\n\u003e PUT /?i=3 HTTP/1.1\n\u003e Host: localhost:8922\n\u003e User-Agent: curl/8.1.2\n\u003e Accept: */*\n\u003e Content-Length: 15000000\n\u003e Content-Type: application/x-www-form-urlencoded\n\u003e \n* We are completely uploaded and fine\n\u003c HTTP/1.1 502 Bad Gateway\n\u003c Server: nginx/1.25.2\n\u003c Date: Sun, 10 Sep 2023 23:16:23 GMT\n\u003c Content-Type: text/html\n\u003c Content-Length: 157\n\u003c Connection: keep-alive\n\u003c \n\u003chtml\u003e\n\u003chead\u003e\u003ctitle\u003e502 Bad Gateway\u003c/title\u003e\u003c/head\u003e\n\u003cbody\u003e\n\u003ccenter\u003e\u003ch1\u003e502 Bad Gateway\u003c/h1\u003e\u003c/center\u003e\n\u003chr\u003e\u003ccenter\u003enginx/1.25.2\u003c/center\u003e\n\u003c/body\u003e\n\u003c/html\u003e\n* Connection #0 to host localhost left intact\n*   Trying 127.0.0.1:8922...\n* Connected to localhost (127.0.0.1) port 8922 (#0)\n\u003e PUT /?i=4 HTTP/1.1\n\u003e Host: localhost:8922\n\u003e User-Agent: curl/8.1.2\n\u003e Accept: */*\n\u003e Content-Length: 15000000\n\u003e Content-Type: application/x-www-form-urlencoded\n\u003e \n* We are completely uploaded and fine\n\u003c HTTP/1.1 502 Bad Gateway\n\u003c Server: nginx/1.25.2\n\u003c Date: Sun, 10 Sep 2023 23:16:23 GMT\n\u003c Content-Type: text/html\n\u003c Content-Length: 157\n\u003c Connection: keep-alive\n\u003c \n\u003chtml\u003e\n\u003chead\u003e\u003ctitle\u003e502 Bad Gateway\u003c/title\u003e\u003c/head\u003e\n\u003cbody\u003e\n\u003ccenter\u003e\u003ch1\u003e502 Bad Gateway\u003c/h1\u003e\u003c/center\u003e\n\u003chr\u003e\u003ccenter\u003enginx/1.25.2\u003c/center\u003e\n\u003c/body\u003e\n\u003c/html\u003e\n* Connection #0 to host localhost left intact\n*   Trying 127.0.0.1:8922...\n* Connected to localhost (127.0.0.1) port 8922 (#0)\n\u003e PUT /?i=5 HTTP/1.1\n\u003e Host: localhost:8922\n\u003e User-Agent: curl/8.1.2\n\u003e Accept: */*\n\u003e Content-Length: 15000000\n\u003e Content-Type: application/x-www-form-urlencoded\n\u003e \n* We are completely uploaded and fine\n\u003c HTTP/1.1 502 Bad Gateway\n\u003c Server: nginx/1.25.2\n\u003c Date: Sun, 10 Sep 2023 23:16:23 GMT\n\u003c Content-Type: text/html\n\u003c Content-Length: 157\n\u003c Connection: keep-alive\n\u003c \n\u003chtml\u003e\n\u003chead\u003e\u003ctitle\u003e502 Bad Gateway\u003c/title\u003e\u003c/head\u003e\n\u003cbody\u003e\n\u003ccenter\u003e\u003ch1\u003e502 Bad Gateway\u003c/h1\u003e\u003c/center\u003e\n\u003chr\u003e\u003ccenter\u003enginx/1.25.2\u003c/center\u003e\n\u003c/body\u003e\n\u003c/html\u003e\n* Connection #0 to host localhost left intact\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgui%2Ftrafficserver-debugging","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgui%2Ftrafficserver-debugging","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgui%2Ftrafficserver-debugging/lists"}