From 2487fff0afd8d6759a3fd7fb504cc82db4cff9e9 Mon Sep 17 00:00:00 2001 From: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> Date: Thu, 10 Jul 2025 18:11:22 -0500 Subject: [PATCH] still try to set soft limit --- .../rootfs/usr/local/ulimit/set_ulimit.sh | 29 ++++++++++++++----- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/docker/main/rootfs/usr/local/ulimit/set_ulimit.sh b/docker/main/rootfs/usr/local/ulimit/set_ulimit.sh index 23a4c33f9..fd172735f 100755 --- a/docker/main/rootfs/usr/local/ulimit/set_ulimit.sh +++ b/docker/main/rootfs/usr/local/ulimit/set_ulimit.sh @@ -14,16 +14,29 @@ TARGET_HARD_LIMIT=65536 echo "Current file limits - Soft: $current_soft_limit, Hard: $current_hard_limit" if [ "$current_soft_limit" -lt "$TARGET_SOFT_LIMIT" ]; then + # Set hard limit first (if it needs to be increased) + hard_limit_success=true if [ "$current_hard_limit" -lt "$TARGET_HARD_LIMIT" ]; then if ! ulimit -Hn "$TARGET_HARD_LIMIT"; then echo "Warning: Failed to set hard limit to $TARGET_HARD_LIMIT" - echo "This may require running as root or adjusting system limits" - exit 1 + echo "Current hard limit is $current_hard_limit, will try to set soft limit anyway" + hard_limit_success=false fi fi - if ! ulimit -Sn "$TARGET_SOFT_LIMIT"; then - echo "Warning: Failed to set soft limit to $TARGET_SOFT_LIMIT" + # Determine what soft limit to use + if [ "$hard_limit_success" = true ] || [ "$current_hard_limit" -ge "$TARGET_SOFT_LIMIT" ]; then + # We can try to set the target soft limit + target_soft=$TARGET_SOFT_LIMIT + else + # Hard limit is too low, set soft limit to current hard limit + target_soft=$current_hard_limit + echo "Setting soft limit to current hard limit ($current_hard_limit) since hard limit couldn't be increased" + fi + + # Set soft limit + if ! ulimit -Sn "$target_soft"; then + echo "Warning: Failed to set soft limit to $target_soft" exit 1 fi @@ -32,10 +45,12 @@ if [ "$current_soft_limit" -lt "$TARGET_SOFT_LIMIT" ]; then new_hard_limit=$(ulimit -Hn) echo "New limits - Soft: $new_soft_limit, Hard: $new_hard_limit" - if [ "$new_soft_limit" -ne "$TARGET_SOFT_LIMIT" ] || [ "$new_hard_limit" -ne "$TARGET_HARD_LIMIT" ]; then - echo "Warning: Nofile limits were set, but not to the exact target values." - else + if [ "$new_soft_limit" -eq "$TARGET_SOFT_LIMIT" ] && [ "$new_hard_limit" -eq "$TARGET_HARD_LIMIT" ]; then echo "Successfully set file limits to target values" + elif [ "$new_soft_limit" -gt "$current_soft_limit" ]; then + echo "Successfully increased soft limit from $current_soft_limit to $new_soft_limit" + else + echo "Warning: Soft limit may not have been increased as expected" fi else echo "Soft limit is already sufficient ($current_soft_limit >= $TARGET_SOFT_LIMIT)"