Dalam proses pembangunan aplikasi web, keperluan untuk prestasi dan kestabilan adalah sangat tinggi. Terutama apabila aplikasi perlu mengendalikan sejumlah besar permintaan serentak, prestasi menjadi isu yang lebih mendesak. Untuk memastikan prestasi dan kebolehpercayaan aplikasi web, kami perlu melakukan ujian tekanan prestasi.
Artikel ini akan membawa anda memahami cara menggunakan Golang untuk melaksanakan ujian tekanan prestasi aplikasi web, dengan itu membantu kami menemui kesesakan aplikasi dengan cepat dan menyediakan langkah balas.
1. Pengenalan kepada alat ujian Golang
Golang secara rasmi menyediakan alat yang dipanggil Go Test, yang membolehkan kami menulis dan menjalankan kes ujian dengan mudah. Selain itu, alat Go Test juga boleh digunakan untuk menulis kes ujian prestasi dan melaksanakan ujian prestasi melalui kes ujian.
Selain alat Go Test, terdapat juga rangka kerja ujian yang dipanggil ujian Penanda Aras yang boleh digunakan untuk ujian prestasi. Ia membolehkan kami menulis fungsi penanda aras dan menjalankannya beberapa kali untuk mendapatkan keputusan ujian yang tepat.
Dalam artikel ini, kami akan menggunakan rangka kerja ujian Penanda Aras untuk melaksanakan ujian prestasi aplikasi web.
2. Persediaan ujian prestasi aplikasi web
Sebelum membuat persediaan untuk ujian prestasi, anda perlu membuat dua persediaan berikut:
1 Tulis aplikasi Web
Sebelum melakukan ujian prestasi, anda perlu melengkapkan penulisan aplikasi web untuk menyediakan kes ujian. Di sini kita menggunakan rangka kerja Gin untuk menulis aplikasi web Kodnya adalah seperti berikut:
package main import ( "github.com/gin-gonic/gin" ) func main() { r := gin.Default() r.GET("/hello", func(c *gin.Context) { c.String(200, "Hello Golang!") }) r.Run(":8080") }
2. Tulis fungsi ujian
Selepas menambah antara muka ujian pada aplikasi web, anda boleh menulis. fungsi penanda aras untuk melaksanakan ujian Prestasi. Di sini kami menulis fungsi ujian berdasarkan pakej ujian Golang dan rangka kerja ujian Penanda Aras Kodnya adalah seperti berikut:
package main_test import ( "net/http" "net/http/httptest" "testing" "github.com/gin-gonic/gin" ) var ( ts *httptest.Server ) func setup() { r := gin.Default() r.GET("/hello", func(c *gin.Context) { c.String(200, "Hello Golang!") }) ts = httptest.NewServer(r) } func BenchmarkGetHello(b *testing.B) { setup() defer ts.Close() client := ts.Client() for i := 0; i < b.N; i++ { _, err := client.Get(ts.URL + "/hello") if err != nil { b.Fatal(err) } } }
Dalam fungsi ujian ini, kami memulakan pelayan ujian melalui fungsi persediaan(). Kemudian, kami menulis fungsi penanda aras yang dipanggil BenchmarkGetHello, dan menggunakan atribut B.N bagi pakej ujian Golang di dalamnya untuk menjalankan permintaan Dapatkan b.N kali dalam gelung.
3. Jalankan ujian prestasi aplikasi web
1 Pelaksanaan baris perintah
Untuk menjalankan ujian prestasi, anda perlu terlebih dahulu memasukkan direktori tempat aplikasi web berada. , dan kemudian gunakan arahan go test untuk menjalankan fungsi ujian. Apabila melaksanakan arahan ini, anda perlu menambah beberapa parameter untuk menapis dan mengeluarkan fungsi ujian. Berikut ialah contoh arahan:
go test -bench=. -benchmem -run=none -cpuprofile=cpu.out -memprofile=mem.out
Selepas melaksanakan arahan keluar, sistem akan mengeluarkan sesuatu yang serupa dengan yang berikut:
BenchmarkGetHello-8 20000000 66.1 ns/op 0 B/op 0 allocs/op
Seperti yang anda lihat daripada output, dalam fungsi penanda aras, Get dijalankan dalam gelung Terdapat 20,000,000 permintaan, setiap permintaan mengambil masa 66.1ns, peruntukan memori ialah 0B, dan bilangan peruntukan memori ialah 0.
2. Gunakan alatan visual
Selain alatan baris arahan, anda juga boleh menggunakan beberapa alatan visual, seperti pprof, go-torch, dll., untuk memaparkan hasil ujian prestasi secara visual. Alat ini membolehkan kami melihat keputusan ujian prestasi dengan lebih intuitif dan mengenal pasti masalah dengan lebih baik.
4. Kesimpulan ujian prestasi
Melalui laporan ujian dan analisis prestasi, kami boleh membuat kesimpulan berikut:
1 Aplikasi web kami boleh terus stabil untuk masa yang sama permintaan bertindak balas.
2. Mungkin terdapat beberapa faktor dalam keputusan ujian yang meningkatkan masa tindak balas, seperti turun naik rangkaian, tahap perkakasan pelayan ujian, dsb.
3. Masa tindak balas dan peruntukan memori aplikasi web kami adalah sangat kecil, mencapai tahap prestasi yang sangat baik.
Ringkasnya, artikel ini memperkenalkan konsep dan teknik asas ujian prestasi aplikasi web dan menyediakan langkah khusus untuk ujian prestasi menggunakan alat Go Test dan rangka kerja ujian Penanda Aras. Melalui ujian dan analisis prestasi, kami dapat memahami dengan lebih baik kesesakan prestasi aplikasi dan membuat pengoptimuman dan pelarasan tepat pada masanya untuk meningkatkan prestasi dan kestabilan aplikasi.
Atas ialah kandungan terperinci Ujian Tekanan Prestasi Aplikasi Web Pembelajaran Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!