Pembuatan Profile NODEJS #4
Untuk memperbaiki masalah ini, Anda membuat modifikasi kecil pada penangan di atas untuk menggunakan versi asinkron dari fungsi pbkdf2:
app.get('/auth', (req, res) => {
let username = req.query.username || '';const password = req.query.password || '';username = username.replace(/[!@#$%^&*]/g, '');if (!username || !password || !users[username]) {return res.sendStatus(400);}crypto.pbkdf2(password, users[username].salt, 10000, 512, 'sha512', (err, hash) => {if (users[username].hash.toString() === hash.toString()) {res.sendStatus(200);} else {res.sendStatus(401);}});});
Operasi benchmark ab baru di atas dengan versi asinkron dari aplikasi Anda menghasilkan:
Concurrency Level: 20
Time taken for tests: 12.846 secondsComplete requests: 250Keep-Alive requests: 250Failed requests: 0HTML transferred: 500 bytesTotal transferred: 50250 bytesTime per request: 1027.689 [ms] (mean)Requests per second: 19.46 [#/sec] (mean)Transfer rate: 3.82 [Kbytes/sec] receivedTime per request: 51.384 [ms] (mean, across all concurrent requests) ...90% 1049Percentage of the requests served within a certain time (ms) 50% 1018 66% 1035 75% 1041 80% 1043 95% 1063 98% 1070100% 1079 (longest request)99% 1071
Yay! Aplikasi Anda sekarang melayani sekitar 20 permintaan per detik, kira-kira 4 kali lebih banyak dibandingkan dengan pembuatan hash sinkron. Selain itu, latensi rata-rata turun dari 4 detik sebelumnya menjadi lebih dari 1 detik.
Mudah-mudahan, melalui penyelidikan kinerja dari contoh ini (memang dibuat-buat), Anda telah melihat bagaimana prosesor tick V8 dapat membantu Anda mendapatkan pemahaman yang lebih baik tentang kinerja aplikasi Node.js Anda.
Posting Komentar untuk "Pembuatan Profile NODEJS #4"