SORU
11 Temmuz 2013, PERŞEMBE


Neden Restify kullanmalıyım?

Vardı gereksinimi için inşa bir REST API node.js ve arıyordum daha hafif çerçeve daha express.js muhtemelen önler istenmeyen özellikleri gibi davranır bir ısmarlama çerçeve için yapı REST API. Onun girişten Restify aynı dava için tavsiye edilir.

Why use restify and not express? restify gibi görünüyordu okuma iyi bir seçimdir.

Ancak sürpriz bir yük ile de çalıştım zaman geldi.

Restify örnek bir DİNLENME API yaptım ve saniyede 1000 istekleri ile sular altında. Benim için sürpriz yol vermiyor bir süre sonra başladı. Aynı uygulama express.js tüm ele inşa edilmiştir.

Şu anda üzerinden API load başvuruyorum

var FnPush = setInterval(function() {           
    for(i=0;i<1000;i  ) 
        SendMsg(makeMsg(i));                
}, 1000);

function SendMsg(msg) {
    var post_data = querystring.stringify(msg);
    var post_options = {
        host: target.host,
        port: target.port,
        path: target.path,
        agent: false,
        method: 'POST',
        headers: {
                'Content-Type': 'application/x-www-form-urlencoded',
                'Content-Length': post_data.length,
                "connection": "close"
            }
    };

    var post_req = http.request(post_options, function(res) {});
    post_req.write(post_data);  
    post_req.on('error', function(e) {          
    }); 
    post_req.end();
}

Var sonuçları mantıklı geliyor mu? Ve eğer açık ise bu senaryoda restify daha verimli? Yoksa onları test ettim bu şekilde herhangi bir hata mı?

yorumlarına yanıt olarak kurulmuştur

restify davranışı

  1. 1000'den fazla ger bir yük ile beslenen zaman.s 1015 ger dek sadece 1 sn alan işlemler durduruldu.s ve hiçbir şey yapmamak. yani. sayaç ben gelen istekleri sayım için uygulanan 1015 sonra artış durdu.

  2. hatta 100 istek bir yük ile beslenen zaman. saniyede 1015 kadar alınan ve duyarlı olmayan ondan sonra gitti.

CEVAP
22 Aralık 2013, Pazar


blog Bu PerfectAPİ ve Express.js ve Restify.js arasında bir karşılaştırma vardı ve sonucu İfade sorgular çok sayıda Restify daha iyi olduğunu, basit bir kıyaslama yaptımExpress ve Restify geçerli sürümleri kullanma

İşte test ifade etmek için kod

var express = require('express');
var app = express();

app.get('/hello/:name', function(req, res){
  res.send('hello '   req.params.name);
});

app.listen(3000);
console.log('Listening on port 3000');

ve burada restify kodu

var restify = require('restify');
var server = restify.createServer();

server.get('/hello/:name', function(req, res, next) {
    res.send('hello '   req.params.name);
});

server.listen(3000, function() {
    console.log('Listening on port 3000');
});

Test için ApacheBench kullandım ve bu kullanmak için simple example

Sadece, sadece bu komutu kullanarak yükleyebilirsiniz sudo apt-get install apache2-utils o zaman bu komut ab -n 10000 -c 100 http://127.0.0.1:3000/test çalıştırabilirsiniz. Sadece 10000 istekleri ile sunucu, 100 eşzamanlılık ile vurdu

ve bu sonuçları

Restify İçin

Server Hostname:        127.0.0.1
Server Port:            3000

Document Path:          /hello/mark
Document Length:        12 bytes

Concurrency Level:      100
Time taken for tests:   2.443 seconds
Complete requests:      10000
Failed requests:        0
Write errors:           0
Total transferred:      1390000 bytes
HTML transferred:       120000 bytes
Requests per second:    4092.53 [#/sec] (mean)
Time per request:       24.435 [ms] (mean)
Time per request:       0.244 [ms] (mean, across all concurrent requests)
Transfer rate:          555.53 [Kbytes/sec] received

Connection Times (ms)
              min  mean[ /-sd] median   max
Connect:        0    0   0.5      0       8
Processing:     5   24   4.5     23      40
Waiting:        5   24   4.5     23      40
Total:         12   24   4.5     23      40

ve Express

Server Hostname:        127.0.0.1
Server Port:            3000

Document Path:          /hello/mark
Document Length:        10 bytes

Concurrency Level:      100
Time taken for tests:   2.254 seconds
Complete requests:      10000
Failed requests:        0
Write errors:           0
Total transferred:      1890000 bytes
HTML transferred:       100000 bytes
Requests per second:    4436.76 [#/sec] (mean)
Time per request:       22.539 [ms] (mean)
Time per request:       0.225 [ms] (mean, across all concurrent requests)
Transfer rate:          818.89 [Kbytes/sec] received

Connection Times (ms)
              min  mean[ /-sd] median   max
Connect:        0    0   0.5      0       7
Processing:    17   22   4.7     21      55
Waiting:       16   22   4.7     21      55
Total:         18   22   4.9     21      58

Karşılaştırma express daha hızlı restify daha ama restify blok yoktu ve tüm istekleri için yanıt görebilirsiniz.

Herhangi biri bu kriter deneyebilir ve istek sayısı ve iki üzerindeki etkisini görmek için eşzamanlı istek sayısı değiştirebilirsiniz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bmarian22

    bmarian22

    22 Aralık 2007
  • Dirty Loops

    Dirty Loops

    21 Mayıs 2007
  • Helder Barreto

    Helder Barre

    22 Mayıs 2006