我的 apache 服务器运行正常,没有任何问题。它在重新启动期间也不会发出任何警告。但是,如果我检查,error.log
我可以看到以下几行不时重复:
[Wed Jun 25 18:15:56.295408 2014] [mpm_prefork:notice] [pid 8817] AH00163: Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4 configured -- resuming normal operations
[Wed Jun 25 18:15:56.295570 2014] [core:notice] [pid 8817] AH00094: Command line: '/usr/sbin/apache2'
[Wed Jun 25 18:26:34.511247 2014] [mpm_prefork:notice] [pid 8817] AH00169: caught SIGTERM, shutting down
Run Code Online (Sandbox Code Playgroud)
他们说什么?我该如何解决?
我的 Apache 服务器需要很长时间来处理请求。我将 strace 附加到它,可以看到以下两个延迟:
1) 非常关键(处理 143 秒)
1335 0.000037 write(16, "\235\0\0\0\3INSERT INTO `br_anonymous_user_tokens` (`dtExpires`, `nmToken`, `dtCreated`) VALUES ('2014-08-25', '46e35dc39a41e836b806f48d21621b066ea182a9', '2014-06-25')", 161) = 161
1335 0.000111 read(16, "\t\0\0\1\0\1\374\262\n\2\0\0\0", 16384) = 13
1335 143.588134 gettimeofday({1403675497, 653337}, NULL) = 0
Run Code Online (Sandbox Code Playgroud)
文件描述符 #16 似乎是 mysql 套接字:
line from strace
1335 0.000328 socket(PF_LOCAL, SOCK_STREAM, 0) = 16
Run Code Online (Sandbox Code Playgroud)
和这里
pidof mysqld
15393
lsof -p 15393
mysqld 15393 mysql 12u IPv4 26913133 0t0 TCP *:mysql (LISTEN)
Run Code Online (Sandbox Code Playgroud)
因此,Apache 似乎正在等待 mysql 执行上一行写入套接字的查询。我对吗?这是否意味着我需要了解为什么 MySQL 执行简单查询需要这么长时间?
2)很长
1335 0.000040 …
Run Code Online (Sandbox Code Playgroud) 我希望所有 apache 非错误响应都以 content-type 发送'application/json; charset=UTF-8'
。我该怎么做?
我尝试添加:
<VirtualHost *:80>
AddType 'application/json; charset=UTF-8'
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
但这需要指定文件扩展名,我不想绑定到文件扩展名,因为我不请求特定文件,而是请求如下资源:
http://my.domain.com/rest/articles/
Run Code Online (Sandbox Code Playgroud)
我也尝试过DefaultType
指令:
<VirtualHost *:80>
DefaultType 'application/json; charset=UTF-8'
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用 -Content-Type:text/html; charset=utf-8
被返回。我错过了什么吗?
Nginx 启动选项的文档对选项给出了以下解释-p
:
-p prefix Set prefix path (default: /usr/local/nginx/). (version >= 0.7.53)
Run Code Online (Sandbox Code Playgroud)
我真的不明白这是什么意思。这个选项可以用来做什么?什么是前缀?