nginx多进程模式下保持后端连接keepalive为啥需要accept_mutex off的原因

先声明,如果可能分析有误,敬请见谅。

 

我们从strace角度进行分析nginx访问memcached:

 

nginx单进程模式下:

 

    [root@localhost sbin]# strace -p 13303
    Process 13303 attached - interrupt to quit
    gettimeofday({1281607164, 794683}, NULL) = 0
    epoll_wait(9, { {EPOLLIN, {u32=158186800, u64=13834971005043195184}}}, 512, -1) = 1
    gettimeofday({1281607175, 954973}, NULL) = 0
    accept(6, {sa_family=AF_INET, sin_port=htons(4847), sin_addr=inet_addr("61.135.255.88")}, [16]) = 7
    ioctl(7, FIONBIO, [1])                  = 0
    epoll_ctl(9, EPOLL_CTL_ADD, 7, {EPOLLIN|EPOLLET, {u32=158186984, u64=3458764513978727912}}) = 0
    epoll_wait(9, { {EPOLLIN, {u32=158186984, u64=3458764513978727912}}}, 512, 60000) = 1
    gettimeofday({1281607175, 956459}, NULL) = 0
    recv(7, "GET /bar?cmd=set&key=dog&val=ani"..., 1024, 0) = 1024
    recv(7, "Invalid%20license%20key%20%20Abo"..., 3515, 0) = 288
    epoll_ctl(9, EPOLL_CTL_MOD, 7, {EPOLLIN|EPOLLOUT|EPOLLET, {u32=158186984, u64=52946776435310056}}) = 0
    socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 10
    ioctl(10, FIONBIO, [1])                 = 0
    epoll_ctl(9, EPOLL_CTL_ADD, 10, {EPOLLIN|EPOLLOUT|EPOLLET, {u32=158187076, u64=13834962827425463876}}) = 0
    connect(10, {sa_family=AF_INET, sin_port=htons(22422), sin_addr=inet_addr("61.135.250.208")}, 16) = -1 EINPROGRESS (Operation now in progress)
    epoll_wait(9, { {EPOLLOUT, {u32=158186984, u64=52946776435310056}}}, 512, 60000) = 1
    gettimeofday({1281607175, 957018}, NULL) = 0
    recv(7, 0xbfffacd3, 1, MSG_PEEK)        = -1 EAGAIN (Resource temporarily unavailable)
    epoll_wait(9, { {EPOLLOUT, {u32=158187076, u64=13834962827425463876}}}, 512, 59999) = 1
    gettimeofday({1281607175, 957136}, NULL) = 0
    getsockopt(10, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
    writev(10, [{"set dog 1234 2000 6/r/n", 21}, {"animal", 6}, {"/r/n", 2}], 3) = 29
    epoll_wait(9, { {EPOLLIN|EPOLLOUT, {u32=158187076, u64=13834962827425463876}}}, 512, 60000) = 1
    gettimeofday({1281607175, 957479}, NULL) = 0
    recv(10, "STORED/r/n", 4096, 0)         = 8
    setsockopt(7, SOL_TCP, TCP_NODELAY, [1], 4) = 0
    writev(7, [{"HTTP/1.1 201 Created/r/nServer: ng"..., 151}, {"STORED/r/n", 8}], 2) = 159
    write(4, "61.135.255.88 - - [12/Aug/2010:1"..., 242) = 242
    recv(7, 0x96d04e0, 1024, 0)             = -1 EAGAIN (Resource temporarily unavailable)
    epoll_wait(9, { {EPOLLIN|EPOLLOUT, {u32=158186984, u64=52946776435310056}}}, 512, 65000) = 1
    gettimeofday({1281607176, 820436}, NULL) = 0
    recv(7, "GET /bar?cmd=set&key=dog&val=ani"..., 1024, 0) = 1024
    recv(7, "Invalid%20license%20key%20%20Abo"..., 3515, 0) = 288
    getsockopt(10, SOL_SOCKET, SO_ERROR, [0], [4]) = 0

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值