개인적으로 혁신적인 소켓.부하 측정 방법.iframe 및 PhantomJS를 사용하여 여러 동시 액세스 상태 설정
14057 단어 Node.jsJavaScriptPhantomJSSocket.io
일반적인 HTTP 요구라면 괜찮을 거예요.하지만 웹소켓을 사용할 때는 좀 번거롭다.
Socket.부하 테스트
@nulltask선생님께서 저에게 iframe로 확인하는 것이 좋겠다고 건의하셨습니다.나는 전혀 생각하지 못했다.
웹 사이트에 대한 액세스 부담 및 Socket입출력 액세스를 구분하기 위해 서버를 분리합니다.
동시 액세스만 가능한 테스트
Amazon EC2
host: hogehoge-ec2.amazonaws.com
port: 5000
load.js
console.log('接続数取得テスト');
var fs = require('fs');
var app = require('http').createServer(function(req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.end(fs.readFileSync('load.html'));
}).listen(4000);
var io = require('socket.io').listen(app);
io.sockets.on('connection', function(socket) {
io.sockets.emit('count', socket.client.conn.server.clientsCount);
console.log('コネクション数',socket.client.conn.server.clientsCount);
socket.on('disconnect', function(data) {
console.log('コネクション数',socket.client.conn.server.clientsCount);
io.sockets.emit('count', socket.client.conn.server.clientsCount);
});
});
Amazon S3
host: hogehoge.com
load.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<p>接続数:<span id="count"></span></p>
<script src="//code.jquery.com/jquery-2.1.1.min.js"></script>
<script src="https://cdn.socket.io/socket.io-1.2.1.js"></script>
<script>
var socket = io.connect('http://hogehoge-ec2.amazonaws.com:5000');
var $count = $('#count');
socket.on('count', function(data) {
$count.text(data);
console.log(data);
});
</script>
</body>
</html>
io.이렇게 하지 않으면 안 될 것 같다로컬 HTML
iframe의 기술수, 100이라면)의 읽기 자체가 의심스러워 50 정도로 바꿨습니다.
(나는 숫자를 투명한 수치로 바꾸고 싶어서)
loadtest-client.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<iframe src="http://hogehoge.com/load.html" frameborder="0"></iframe>
<iframe src="http://hogehoge.com/load.html" frameborder="0"></iframe>
<iframe src="http://hogehoge.com/load.html" frameborder="0"></iframe>
<iframe src="http://hogehoge.com/load.html" frameborder="0"></iframe>
<iframe src="http://hogehoge.com/load.html" frameborder="0"></iframe>
<iframe src="http://hogehoge.com/load.html" frameborder="0"></iframe>
<iframe src="http://hogehoge.com/load.html" frameborder="0"></iframe>
<iframe src="http://hogehoge.com/load.html" frameborder="0"></iframe>
<iframe src="http://hogehoge.com/load.html" frameborder="0"></iframe>
<iframe src="http://hogehoge.com/load.html" frameborder="0"></iframe>
<!--
・
・省略
・
-->
</body>
</html>
이렇게 하면 이 로컬에 접근하면 연결 수 (동시 접근) 가 50이 됩니다.여러 탭에서 이걸 열었어요.
↓ 이런 느낌 웃음
실제 서버 쪽에서 콘솔을 보면 동시 액세스 수가 증가합니다.
메시지 보내기
PhantomJS부터 하면 편리해요.
마지막으로 iframe를 사용하는 것이 좋은 방법이라고 생각하지만 탭을 여는 것은 번거롭기 때문에 PhantoomJS를 사용하여 여러 개의 접근을 실현한다.
PhantomJS로 로컬 HTML 10회 에뮬레이션
open.js
for(var i = 0; i < 10; i++){
var page = require('webpage').create();
page.open('http://localhost/loadtest/loadtest-client.html', function() {
});
}
$ phantomjs open.js
브라우저를 하나하나 훑어보지 않아도 돼, 편리해.
최후
제게 건의를 했습니다.@nulltask선생님, 감사합니다!
Reference
이 문제에 관하여(개인적으로 혁신적인 소켓.부하 측정 방법.iframe 및 PhantomJS를 사용하여 여러 동시 액세스 상태 설정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/n0bisuke/items/2c33b29ad4aa009ea2f6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)