javascript - Hasilnya berbeza daripada keputusan yang diteka apabila Node diakses secara serentak
怪我咯
怪我咯 2017-06-22 11:54:23
0
1
794
  • Logik ujian adalah agak mudah, iaitu, Node mengakses pangkalan data untuk menanyakan data Masa pelaksanaan pernyataan SQL adalah kira-kira 2 saat saya menggunakan JMeter untuk menjalankan ujian berbilang benang (5 utas). hasil yang dijangkakan (mengikut ciri tidak menyekat Node), ia sepatutnya Ia adalah 5 utas yang mengembalikan hasil dalam 2 saat pada masa yang sama, tetapi hasilnya adalah seperti ini:

  • Menurut keputusan, Node dilaksanakan secara bersiri Ini tidak konsisten dengan hasil yang diharapkan

  • Kod:
  • app.get('/', function (req, res) {
        var now = +(new Date())
        connection.query('select count(*) from ACTIVITY group by name', function (err, result, fields) {
            var curr = +(new Date())
            var tmp = '耗时:' + (curr - now)
            console.log(tmp)
            res.send(tmp)
        })
    })
    Nota: Ini bukan masalah pemprosesan pangkalan data, kerana saya menggunakan dua mesin berbeza untuk melaksanakan pernyataan SQL yang sama, dan masanya ialah 2 saat

Berikut adalah tambahan

    Aktifkan ke @BianCheng, sebabnya ialah beberapa penyataan SQL menggunakan sambungan yang sama.

Kod adalah seperti berikut:

    app.get('/', function (req, res) {
        var now = +(new Date())
        pool.getConnection(function (err, conn) {
            console.log('--连接池连接成功!' + +(new Date()))
            conn.query('select count(*) from ACTIVITY group by name', function (err, result, fields) {
                var curr = +(new Date())
                var tmp = '耗时:' + (curr - now)
                console.log(tmp)
                res.send(tmp)
            })
        })
    })
  • Hasil ini lebih konsisten dengan pertanyaan lima utas pada masa yang sama, dan semua masa pulangan adalah 4s+ Apabila tekanan meningkat, masa pertanyaan secara semula jadi akan menjadi lebih lama, apabila bilangan utas ditukar kepada 2, masa balik ialah 2s+ , sesuai dengan jangkaan!
怪我咯
怪我咯

走同样的路,发现不同的人生

membalas semua(1)
某草草

Permulaan masa adalah sebelum pertanyaan dan penghujungnya ialah apabila pertanyaan selesai, jadi setiap kali ialah masa ketika pertanyaan dijalankan,

Nod tidak segerak, tetapi anda menggunakan sambungan yang sama Adakah sambungan itu sendiri perlu dibariskan? Setakat yang saya tahu, SQL yang dilaksanakan oleh kebanyakan pangkalan data dalam sambungan yang sama beratur dan dilaksanakan satu demi satu... Sambungan berbilang mungkin selari.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan