先声明,如果可能分析有误,敬请见谅。
我们从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