小编Ter*_*ska的帖子

如何获取侦听套接字的BACKLOG

我在ubuntu linux上的端口80上有一个监听套接字.

tcp    0  0 0.0.0.0:80      0.0.0.0:*   LISTEN  12248/nginx
Run Code Online (Sandbox Code Playgroud)

有没有办法获得该套接字的backlog值(发送给listen()调用的backlog值)?

我知道我可以查看nginx配置,但配置文件可以更改而无需使用新配置重新加载nginx,因此配置和实际LISTEN调用中的backlog参数可能不同.

linux performance kernel tcp nginx

13
推荐指数
2
解决办法
7704
查看次数

客户端向服务器发送延迟的FIN ACK(~500ms)

我有一个node.js客户端(10.177.62.7)从服务器(10.177.0.1)请求来自http rest服务的一些数据.客户端只是使用node.js http.request()方法(agent = false).客户端在Ubuntu 11.10框上.

为什么客户端在475ms后发送FIN ACK?为何这么慢?他应该立即发送FIN ACK.我有很多这样的情况.大约1%的整个流量是带有延迟FIN ACK的请求.

客户端上的Cpu空闲大约是99%,所以没有什么能耗尽CPU.

如何调试?会是什么呢?我需要调整任何sysctl选项吗?

屏幕截图第2列是数据包之间经过的时间.

链接到更大的图片.

在此输入图像描述

linux networking tcp tcpdump node.js

10
推荐指数
1
解决办法
4128
查看次数

tcpdump - 如何根据tcp连接时间/持续时间进行过滤

是否有可能根据tcp连接时间(连接持续时间)过滤tcpdump(实时或创建转储后)?

我正在录制http json rpc流量.我想只记录比1000毫秒更长的连接.

在wireshark中,菜单 - >统计 - >对话(TCP选项卡)中有工具,我可以按"持续时间"排序.但我想在之前记录(或过滤)长期存在的连接(而不是在wireshark中).

在伪命令中我想做这样的事情:

tcpdump -i eth0 port 80 and connectionTime>1000ms -w data.pcap
Run Code Online (Sandbox Code Playgroud)

或录音后:

cat data.pcap | SOMETOOL -connectionTime>1000ms > dataLongConnections.pcap
Run Code Online (Sandbox Code Playgroud)

SOMETOOL必须将过滤后的数据导出为Wireshark将理解的格式.因为过滤后我想在Wireshark中分析这些数据.

我怎么能这样做?

linux filtering tcpdump

10
推荐指数
1
解决办法
3224
查看次数

Haskell Warp Performance vs Erlang Misultin测试(如何加载文件内容并作为响应)

我想测试haskell warp http服务器的性能(每秒请求数).我对haskell一无所知.我想和下面的erlang代码一样:

  1. 从磁盘加载"page.txt"一次(ascii文件100kB)
  2. 在每个请求上提供该文件的内容,但不从磁盘重新加载

在haskell中如何做到这一点?

二郎:

-module(test).
-export([start/0]).

start() ->
    {ok, Bin} = file:read_file("page.txt"), 
    misultin:start_link([{port, 3000}, {loop, fun(Req) -> Req:ok(Bin) end}]).
Run Code Online (Sandbox Code Playgroud)

我遇到了这个haskell示例,我需要修改它以使用从文件加载的内容.

哈斯克尔:

{-# LANGUAGE OverloadedStrings #-}
import Network.Wai
import Network.Wai.Handler.Warp
import Blaze.ByteString.Builder (fromByteString)
import Network.HTTP.Types (status200)

main = run 3000 $ const $ return $ ResponseBuilder
    status200
    [("Content-Type", "text/plain"), ("Content-Length", "4")]
    $ fromByteString "TEST"
Run Code Online (Sandbox Code Playgroud)

请帮忙!:)

erlang performance webserver haskell

5
推荐指数
1
解决办法
1001
查看次数

HTTP - 如何发送多个预缓存的 gzipped 块?

假设我在内存中有 2 个单独的 gzip html 块。我可以将 chunk1+chunk2 发送到 HTTP 客户端吗?有没有浏览器支持这个?或者没有办法做到这一点,我必须gzip整个流而不是单个块?

我想为客户端提供服务,例如 chunk1+chunk2 和 chunk2+chunk1 等(不同的顺序),但我不想每次都压缩整个页面,也不想缓存整个页面。我想使用预压缩缓存块并发送它们。

nodejs 代码(节点 v0.10.7):

// creating pre cached data buffers
var zlib = require('zlib');
var chunk1, chunk2;
zlib.gzip(new Buffer('test1'), function(err, data){
  chunk1 = data;
});
zlib.gzip(new Buffer('test2'), function(err, data){
  chunk2 = data;
});


var http = require('http');
http.createServer(function (req, res) {
      res.writeHead(200, {'Content-Type': 'text/plain', 'Content-Encoding': 'gzip'});
      // writing two pre gziped buffers
      res.write(chunk1); // if I send only this one everything is OK
      res.write(chunk2); // if …
Run Code Online (Sandbox Code Playgroud)

gzip google-chrome http zlib node.js

5
推荐指数
1
解决办法
963
查看次数

Erlang中哪个序列化方法/函数/BIF性能最好?

哪种序列化方法/函数/BIF等在Erlang中性能最好?我的情况是:

  1. 我有我需要检索每个请求的数据的内存缓存。
  2. 检索到的数据是二进制项(当我执行 binary_to_term 时有一个小数据列表)
  3. 我需要对这些数据做一些逻辑,所以我需要对它们进行反序列化。
  4. 在另一个系统上,我正在该内存缓存中设置该数据,以便我可以更改所有内容。

请帮我选择序列化的方法。只有表现才是我的目标。谢谢!

erlang performance serialization

2
推荐指数
1
解决办法
938
查看次数