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
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)
})
})
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)
})
})
})
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.