当我在nginx中设置worker_processes = 8时,为什么有这么多CLOSE_WAIT阶段?

时间:2015-11-04 02:04:11

标签: post nginx redis

全部交易〜我的nginx有问题:我的服务有太多超时。你猜错了,有两个 CLOSE_WAIT 阶段,当我运行命令“netstat -tc | grep关闭“。

背景

最近,我做了一些反垃圾邮件工作,并使用nginx(http 发布方法)提供服务器界面。我还使用redis来存储一些统计数据 八个nginx工人流程。

问题

当我在nginx.conf中设置worker_processes = 1时,存在很少的CLOSE_WAIT阶段,并且超时不是那么严重。

但是当我在nginx.conf中的worker_processes = 8时,有很多超时和CLOSE_WAIT阶段。

我只是想知道为什么在设置worker_processes = 8之后存在大量超时,以及如何解决它?

下面列出的一些相关代码

1. nginx.conf 文件如下(省略一些不相关的行):

worker_processes  1;
events {
  worker_connections  1024;
}
http {
include       /data/rd/nginx_spam/conf/mime.types;
sendfile        on; 
keepalive_timeout  65; 
tcp_nodelay        on; 

client_body_in_single_buffer on; 
client_body_buffer_size 16m;
server_names_hash_bucket_size 128;
client_header_buffer_size 256k;
large_client_header_buffers 4 128k;
client_max_body_size 16m;

server {
  listen   9002;

  client_body_in_single_buffer on;
  client_body_buffer_size 16m;
  client_header_buffer_size 256k;
  client_max_body_size 16m;
}

2. 处理redis 如下代码,rds_ctx初始化为golbal var

void process_uid_balcklist_strategy(const text_info &info, redisContext *rds_ctx, rule_result &judge_res_rule) {                                        
  string redis_cmd = "GET " + info.from_source_type + "_Bfuid_" +   info.from_uid;
  redisReply *reply = (redisReply*)redisCommand(rds_ctx, redis_cmd.c_str());
  if (reply && reply->type != REDIS_REPLY_ERROR) {
    int level = 0; 
    if (reply->str) level = string_to_int(reply->str);
    if (level > 0) { 
      judge_res_rule.hit_rule += "fuid_black ";
      judge_res_rule.level = max(judge_res_rule.level, level);
  }    
  }
    if (reply) freeReplyObject(reply);
}

0 个答案:

没有答案