213 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			213 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <!DOCTYPE html>
 | |
| <html lang="en">
 | |
|     <head>
 | |
|         <meta charset="utf-8">
 | |
|         <meta http-equiv="X-UA-Compatible" content="IE=edge">
 | |
|         <meta name="viewport" content="width=device-width, initial-scale=1.0">
 | |
|         
 | |
|         
 | |
|         
 | |
|         <link rel="shortcut icon" href="../img/favicon.ico">
 | |
|         <title>Performance - IXWebSocket</title>
 | |
|         <link href="../css/bootstrap.min.css" rel="stylesheet">
 | |
|         <link href="../css/font-awesome.min.css" rel="stylesheet">
 | |
|         <link href="../css/base.css" rel="stylesheet">
 | |
|         <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/github.min.css">
 | |
| 
 | |
|         <script src="../js/jquery-1.10.2.min.js" defer></script>
 | |
|         <script src="../js/bootstrap.min.js" defer></script>
 | |
|         <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js"></script>
 | |
|         <script>hljs.initHighlightingOnLoad();</script> 
 | |
|     </head>
 | |
| 
 | |
|     <body>
 | |
|         <div class="navbar fixed-top navbar-expand-lg navbar-dark bg-primary">
 | |
|             <div class="container">
 | |
|                 <a class="navbar-brand" href="..">IXWebSocket</a>
 | |
|                 <!-- Expander button -->
 | |
|                 <button type="button" class="navbar-toggler" data-toggle="collapse" data-target="#navbar-collapse">
 | |
|                     <span class="navbar-toggler-icon"></span>
 | |
|                 </button>
 | |
| 
 | |
|                 <!-- Expanded navigation -->
 | |
|                 <div id="navbar-collapse" class="navbar-collapse collapse">
 | |
|                         <!-- Main navigation -->
 | |
|                         <ul class="nav navbar-nav">
 | |
|                             <li class="navitem">
 | |
|                                 <a href=".." class="nav-link">Home</a>
 | |
|                             </li>
 | |
|                             <li class="navitem">
 | |
|                                 <a href="../CHANGELOG/" class="nav-link">Changelog</a>
 | |
|                             </li>
 | |
|                             <li class="navitem">
 | |
|                                 <a href="../build/" class="nav-link">Build</a>
 | |
|                             </li>
 | |
|                             <li class="navitem">
 | |
|                                 <a href="../design/" class="nav-link">Design</a>
 | |
|                             </li>
 | |
|                             <li class="navitem">
 | |
|                                 <a href="../packages/" class="nav-link">Packages</a>
 | |
|                             </li>
 | |
|                             <li class="navitem active">
 | |
|                                 <a href="./" class="nav-link">Performance</a>
 | |
|                             </li>
 | |
|                             <li class="navitem">
 | |
|                                 <a href="../usage/" class="nav-link">Examples</a>
 | |
|                             </li>
 | |
|                             <li class="navitem">
 | |
|                                 <a href="../ws/" class="nav-link">Ws</a>
 | |
|                             </li>
 | |
|                         </ul>
 | |
| 
 | |
|                     <ul class="nav navbar-nav ml-auto">
 | |
|                         <li class="nav-item">
 | |
|                             <a href="#" class="nav-link" data-toggle="modal" data-target="#mkdocs_search_modal">
 | |
|                                 <i class="fa fa-search"></i> Search
 | |
|                             </a>
 | |
|                         </li>
 | |
|                             <li class="nav-item">
 | |
|                                 <a rel="prev" href="../packages/" class="nav-link">
 | |
|                                     <i class="fa fa-arrow-left"></i> Previous
 | |
|                                 </a>
 | |
|                             </li>
 | |
|                             <li class="nav-item">
 | |
|                                 <a rel="next" href="../usage/" class="nav-link">
 | |
|                                     Next <i class="fa fa-arrow-right"></i>
 | |
|                                 </a>
 | |
|                             </li>
 | |
|                     </ul>
 | |
|                 </div>
 | |
|             </div>
 | |
|         </div>
 | |
| 
 | |
|         <div class="container">
 | |
|             <div class="row">
 | |
|                     <div class="col-md-3"><div class="navbar-light navbar-expand-md bs-sidebar hidden-print affix" role="complementary">
 | |
|     <div class="navbar-header">
 | |
|         <button type="button" class="navbar-toggler collapsed" data-toggle="collapse" data-target="#toc-collapse" title="Table of Contents">
 | |
|             <span class="fa fa-angle-down"></span>
 | |
|         </button>
 | |
|     </div>
 | |
| 
 | |
|     
 | |
|     <div id="toc-collapse" class="navbar-collapse collapse card bg-secondary">
 | |
|         <ul class="nav flex-column">
 | |
|             
 | |
|             <li class="nav-item" data-level="2"><a href="#websocket-client-performance" class="nav-link">WebSocket Client performance</a>
 | |
|               <ul class="nav flex-column">
 | |
|               </ul>
 | |
|             </li>
 | |
|         </ul>
 | |
|     </div>
 | |
| </div></div>
 | |
|                     <div class="col-md-9" role="main">
 | |
| 
 | |
| <h2 id="websocket-client-performance">WebSocket Client performance</h2>
 | |
| <p>We will run a client and a server on the same machine, connecting to localhost. This bench is run on a MacBook Pro from 2015. We can receive over 200,000 (small) messages per second, another way to put it is that it takes 5 micro-second to receive and process one message. This is an indication about the minimal latency to receive messages.</p>
 | |
| <h3 id="receiving-messages">Receiving messages</h3>
 | |
| <p>By using the push_server ws sub-command, the server will send the same message in a loop to any connected client.</p>
 | |
| <pre><code>ws push_server -q --send_msg 'yo'
 | |
| </code></pre>
 | |
| <p>By using the echo_client ws sub-command, with the -m (mute or no_send), we will display statistics on how many messages we can receive per second.</p>
 | |
| <pre><code>$ ws echo_client -m ws://localhost:8008
 | |
| [2020-08-02 12:31:17.284] [info] ws_echo_client: connected
 | |
| [2020-08-02 12:31:17.284] [info] Uri: /
 | |
| [2020-08-02 12:31:17.284] [info] Headers:
 | |
| [2020-08-02 12:31:17.284] [info] Connection: Upgrade
 | |
| [2020-08-02 12:31:17.284] [info] Sec-WebSocket-Accept: byy/pMK2d0PtRwExaaiOnXJTQHo=
 | |
| [2020-08-02 12:31:17.284] [info] Server: ixwebsocket/10.1.4 macos ssl/SecureTransport zlib 1.2.11
 | |
| [2020-08-02 12:31:17.284] [info] Upgrade: websocket
 | |
| [2020-08-02 12:31:17.663] [info] messages received: 0 per second 2595307 total
 | |
| [2020-08-02 12:31:18.668] [info] messages received: 79679 per second 2674986 total
 | |
| [2020-08-02 12:31:19.668] [info] messages received: 207438 per second 2882424 total
 | |
| [2020-08-02 12:31:20.673] [info] messages received: 209207 per second 3091631 total
 | |
| [2020-08-02 12:31:21.676] [info] messages received: 216056 per second 3307687 total
 | |
| [2020-08-02 12:31:22.680] [info] messages received: 214927 per second 3522614 total
 | |
| [2020-08-02 12:31:23.684] [info] messages received: 216960 per second 3739574 total
 | |
| [2020-08-02 12:31:24.688] [info] messages received: 215232 per second 3954806 total
 | |
| [2020-08-02 12:31:25.691] [info] messages received: 212300 per second 4167106 total
 | |
| [2020-08-02 12:31:26.694] [info] messages received: 212501 per second 4379607 total
 | |
| [2020-08-02 12:31:27.699] [info] messages received: 212330 per second 4591937 total
 | |
| [2020-08-02 12:31:28.702] [info] messages received: 216511 per second 4808448 total
 | |
| </code></pre></div>
 | |
|             </div>
 | |
|         </div>
 | |
| 
 | |
|         <footer class="col-md-12">
 | |
|             <hr>
 | |
|             <p>Documentation built with <a href="https://www.mkdocs.org/">MkDocs</a>.</p>
 | |
|         </footer>
 | |
|         <script>
 | |
|             var base_url = "..",
 | |
|                 shortcuts = {"help": 191, "next": 78, "previous": 80, "search": 83};
 | |
|         </script>
 | |
|         <script src="../js/base.js" defer></script>
 | |
|         <script src="../search/main.js" defer></script>
 | |
| 
 | |
|         <div class="modal" id="mkdocs_search_modal" tabindex="-1" role="dialog" aria-labelledby="searchModalLabel" aria-hidden="true">
 | |
|     <div class="modal-dialog modal-lg">
 | |
|         <div class="modal-content">
 | |
|             <div class="modal-header">
 | |
|                 <h4 class="modal-title" id="searchModalLabel">Search</h4>
 | |
|                 <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
 | |
|             </div>
 | |
|             <div class="modal-body">
 | |
|                 <p>
 | |
|                     From here you can search these documents. Enter
 | |
|                     your search terms below.
 | |
|                 </p>
 | |
|                 <form>
 | |
|                     <div class="form-group">
 | |
|                         <input type="search" class="form-control" placeholder="Search..." id="mkdocs-search-query" title="Type search term here">
 | |
|                     </div>
 | |
|                 </form>
 | |
|                 <div id="mkdocs-search-results"></div>
 | |
|             </div>
 | |
|             <div class="modal-footer">
 | |
|             </div>
 | |
|         </div>
 | |
|     </div>
 | |
| </div><div class="modal" id="mkdocs_keyboard_modal" tabindex="-1" role="dialog" aria-labelledby="keyboardModalLabel" aria-hidden="true">
 | |
|     <div class="modal-dialog">
 | |
|         <div class="modal-content">
 | |
|             <div class="modal-header">
 | |
|                 <h4 class="modal-title" id="keyboardModalLabel">Keyboard Shortcuts</h4>
 | |
|                 <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
 | |
|             </div>
 | |
|             <div class="modal-body">
 | |
|               <table class="table">
 | |
|                 <thead>
 | |
|                   <tr>
 | |
|                     <th style="width: 20%;">Keys</th>
 | |
|                     <th>Action</th>
 | |
|                   </tr>
 | |
|                 </thead>
 | |
|                 <tbody>
 | |
|                   <tr>
 | |
|                     <td class="help shortcut"><kbd>?</kbd></td>
 | |
|                     <td>Open this help</td>
 | |
|                   </tr>
 | |
|                   <tr>
 | |
|                     <td class="next shortcut"><kbd>n</kbd></td>
 | |
|                     <td>Next page</td>
 | |
|                   </tr>
 | |
|                   <tr>
 | |
|                     <td class="prev shortcut"><kbd>p</kbd></td>
 | |
|                     <td>Previous page</td>
 | |
|                   </tr>
 | |
|                   <tr>
 | |
|                     <td class="search shortcut"><kbd>s</kbd></td>
 | |
|                     <td>Search</td>
 | |
|                   </tr>
 | |
|                 </tbody>
 | |
|               </table>
 | |
|             </div>
 | |
|             <div class="modal-footer">
 | |
|             </div>
 | |
|         </div>
 | |
|     </div>
 | |
| </div>
 | |
| 
 | |
|     </body>
 | |
| </html>
 | 
