use max chunk size 4 MiB.
1 files changed, 16 insertions(+), 8 deletions(-)

M wispserve/serve.w
M wispserve/serve.w +16 -8
@@ 131,6 131,7 @@ define 64KiB : expt 2 16
 define 128KiB : expt 2 17
 define 256KiB : expt 2 18
 define 2MiB : expt 2 21
+define 4MiB : expt 2 22
 define 32MiB : expt 2 25
 define 1GiB : expt 2 30
 define 64GiB : expt 2 36

          
@@ 232,14 233,21 @@ define : initial-ranges-tiered start siz
                . 256KiB ;; up to 8 chunks
              : < size 32MiB
                . 2MiB ;; up to 16 chunks
-             : < size 1GiB
-               . 32MiB ;; up to 32 chunks
-             : < size 64GiB
-               . 1GiB ;; up to 64 chunks
-             : < size 8TiB
-               . 64GiB ;; up to 128 chunks
-             else
-               . 8TiB ;; far in the future
+             else ;; limit to 4MiB, because everything larger gets
+                  ;; Guile fibers webserver into potential garbage
+                  ;; colletion memory problems: GC Warning: Repeated
+                  ;; allocation of very large block (appr. size
+                  ;; 8388608): May lead to memory leak and poor
+                  ;; performance
+               . 4MiB
+             ;; : < size 1GiB
+             ;;   . 32MiB ;; up to 32 chunks
+             ;; : < size 64GiB
+             ;;   . 1GiB ;; up to 64 chunks
+             ;; : < size 8TiB
+             ;;   . 64GiB ;; up to 128 chunks
+             ;; else
+             ;;   . 8TiB ;; far in the future
                
           
 define : missing-ranges-bytes size received-ranges