Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk mengkonfigurasi ulimit -n dengan berkesan menggunakan Golang?
Bagaimana untuk menetapkan ulimit -n daripada program golang?
Tugas biasa dalam pentadbiran sistem ialah menetapkan ulimit untuk mengawal penggunaan sumber. Untuk menetapkan bilangan maksimum deskriptor fail terbuka (ulimit -n), anda boleh menggunakan panggilan sistem setrlimit dan 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>
Memahami output:
<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>
Output menunjukkan had sumber awal, percubaan yang gagal untuk menetapkan had dan had akhir selepas menjalankan program dengan sudo (memandangkan pengguna istimewa boleh mengubah suai had keras).
Isu yang berpotensi :
Perhatikan bahawa anda mungkin menghadapi ralat "operasi tidak dibenarkan" jika cuba menetapkan had tanpa sudo. Selain itu, pastikan anda telah mengemas kini versi Go anda untuk memasukkan pembetulan pepijat untuk Getrlimit dan Setrlimit pada pengedaran 32-bit Linux, seperti yang dinyatakan dalam respons yang diberikan.
Atas ialah kandungan terperinci Bagaimana untuk mengkonfigurasi ulimit -n dengan berkesan menggunakan Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!