Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Ujian Tekanan Prestasi Aplikasi Web Pembelajaran Golang

Ujian Tekanan Prestasi Aplikasi Web Pembelajaran Golang

PHPz
PHPzasal
2023-06-24 10:59:541363semak imbas

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
  • -bench= bermaksud jalankan semua penanda aras
  • -benchmem bermaksud mengaktifkan penanda aras tambahan untuk peruntukan memori
  • -run= tiada bermakna. tidak menjalankan ujian unit
  • -cpuprofile=cpu.out bermaksud mengeluarkan laporan analisis CPU ke cpu fail.out
  • -memprofile=mem.out bermaksud mengeluarkan laporan analisis memori ke mem fail .

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn