Maison >développement back-end >Golang >Comment configurer ulimit -n efficacement en utilisant Golang ?
Comment définir ulimit -n à partir d'un programme Golang ?
Une tâche courante dans l'administration système consiste à définir des ulimits pour contrôler l'utilisation des ressources. Pour définir le nombre maximum de descripteurs de fichiers ouverts (ulimit -n), vous pouvez utiliser les appels système setrlimit et getrlimit.
<code class="go">import ( "fmt" "syscall" ) func main() { var rLimit syscall.Rlimit err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rLimit) if err != nil { fmt.Println("Error Getting Rlimit ", err) } fmt.Println(rLimit) rLimit.Max = 999999 rLimit.Cur = 999999 err = syscall.Setrlimit(syscall.RLIMIT_NOFILE, &rLimit) if err != nil { fmt.Println("Error Setting Rlimit ", err) } err = syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rLimit) if err != nil { fmt.Println("Error Getting Rlimit ", err) } fmt.Println("Rlimit Final", rLimit) }</code>
Comprendre le résultat :
<code class="Bash">$ uname -a Linux peterSO 3.8.0-26-generic #38-Ubuntu SMP Mon Jun 17 21:43:33 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux $ go build rlimit.go $ ./rlimit {1024 4096} Error Setting Rlimit operation not permitted Rlimit Final {1024 4096} $ sudo ./rlimit [sudo] password for peterSO: {1024 4096} Rlimit Final {999999 999999}</code>
Le résultat affiche les limites initiales des ressources, la tentative infructueuse de définition des limites et les limites finales après l'exécution du programme avec sudo (puisque les utilisateurs privilégiés peuvent modifier les limites strictes).
Problèmes potentiels :
Notez que vous pouvez rencontrer des erreurs « opération non autorisée » si vous essayez de définir des limites sans sudo. Assurez-vous également d'avoir mis à jour votre version Go pour inclure les corrections de bogues pour Getrlimit et Setrlimit sur les distributions Linux 32 bits, comme mentionné dans la réponse fournie.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!