linux开启nscd服务缓存加速

服务器zkbhj 发表了文章 • 0 个评论 • 1280 次浏览 • 2017-03-01 17:51 • 来自相关话题

    在我使用的阿里云主机上有观察到开启了一个服务nscd ,后来谷哥了下该服务的作用。了解到nscd会缓存三种服务passwd group hosts,所以它会记录三个库,分别对应源/etc/passwd, /etc/hosts 和 /etc/resolv.conf每个库保存两份缓存,一份是找到记录的,一份是没有找到记录的。每一种缓存都保存有生存时间(TTL)。其作用就是在本当中增加cache ,加快如DNS的解析等的速度。
 
一、nscd的配置
通过编辑/etc/nscd.conf文件,在其中增加如下一行可以开启本地DNS cache:
enable-cache hosts yes阿里云主机上的配置如下:
[root@361way ~]# cat /etc/nscd.conf
#logfile /var/log/nscd.log
threads 6
max-threads 128
server-user nscd
debug-level 5
paranoia no
enable-cache passwd no
enable-cache group no
enable-cache hosts yes
positive-time-to-live hosts 5
negative-time-to-live hosts 20
suggested-size hosts 211
check-files hosts yes
persistent hosts yes
shared hosts yes
max-db-size hosts 33554432相关参数的解释如下:

logfile debug-file-name

指定调试信息写入的文件名。

debug-level value

设置希望的调试级别。

threads number

这是启动的等待请求的线程数。最少将创建5个线程。

server-user user

如果设置了该选项,nscd将作为该用户运行,而不是作为root。如果每个用户都使用一个单独的缓存(-S参数),将忽略该选项。

enable-cache service <yes|no>

启用或禁用制定的 服务 缓存。

positive-time-to-live service value

设置 service 在指定缓存中正的项目(成功的请求)的TTL(存活时间)。 Value 以秒为单位。较大的值将增加缓存命中率从而减低平均响应时间,但是将增加缓存的一致性问题。

negative-time-to-live service value

设置 service 在指定缓存中负的项目(失败的请求)的TTL(存活时间)。 Value 以秒为单位。如果存在由不在系统数据库中的uid(用户ID)(例如在以root身份解包linux 内核源代码时)所拥有的文件将明显改善性能;应该维持较小的值以降低缓存一致性问题。

suggested-size service value

这是内部散列表的大小, value 应该保持一个素数以达到优化效果。

check-files service <yes|no>

启用或禁用检查属于指定 服务 的文件的改变。这些文件是 /etc/passwd, /etc/group, 以及/etc/hosts。 
二、nscd 服务查看和清除
 
默认该服务在redhat或centos下是关闭的,可以通过services nscd start开启。缓存DB文件在/var/db/nscd下。可以通过nscd -g查看统计的信息,这里列出部分:
 
[root@361way ~]# nscd -g
nscd configuration:
5 server debug level
34d 23h 14m 18s server runtime
6 current number of threads
128 maximum number of threads
0 number of times clients had to wait
no paranoia mode enabled
3600 restart internal
5 reload count
passwd cache:
no cache is enabled
no cache is persistent
no cache is shared
0 suggested size
0 total data pool size
0 used data pool size
3600 seconds time to live for positive entries
20 seconds time to live for negative entries
0 cache hits on positive entries
0 cache hits on negative entries
0 cache misses on positive entries
0 cache misses on negative entries
0% cache hit rate
0 current number of cached values
0 maximum number of cached values
0 maximum chain length searched
0 number of delays on rdlock
0 number of delays on wrlock
0 memory allocations failed
yes check /etc/passwd for changes清除缓存
nscd -i passwd
nscd -i group
nscd -i hosts除了上面的方法,重启nscd服务同样可以达到清理cache的目的。
 
三、nscd的效果
 
首先要看网络和dns服务器的能力,dns解析越慢,dns缓存的优势就越大.比如我们在北京用的dns服务器202.106.0.20和google的dns服务器8.8.8.8速度会差不少.

如果dns服务器比较稳定,那它对效率的影响就是一个常数.这个常数有多大呢?

我简单试了一下.在局域网内进行压力测试,压一个nginx下的静态页面,使用202.106.0.20这个dns服务器,不用dns缓存.平均一分钟可以访问27万次.压一个简单的php页面,平均一分钟可以访问22万次.加上nscd服务后,静态页面平均一分钟可以访问120万次,要快4倍多.php页面平均一分钟可以访问50万次,快一倍多.

如果是做搜索引擎或是一些代理服务类的项目,比如短信通道,数据推送服务,这个性能提升还是比较可观的.但在一般的项目中,一台服务器每分钟发22万次请求的情况是很少见的,所以这个性能提升也微呼其微.

但在追求极限的道路上,每一小步都至关重要噢~
 
原文链接:http://www.361way.com/linux-ns ... .html
  查看全部
    在我使用的阿里云主机上有观察到开启了一个服务nscd ,后来谷哥了下该服务的作用。了解到nscd会缓存三种服务passwd group hosts,所以它会记录三个库,分别对应源/etc/passwd, /etc/hosts 和 /etc/resolv.conf每个库保存两份缓存,一份是找到记录的,一份是没有找到记录的。每一种缓存都保存有生存时间(TTL)。其作用就是在本当中增加cache ,加快如DNS的解析等的速度。
 
一、nscd的配置
通过编辑/etc/nscd.conf文件,在其中增加如下一行可以开启本地DNS cache:
enable-cache hosts yes
阿里云主机上的配置如下:
[root@361way ~]# cat /etc/nscd.conf
#logfile /var/log/nscd.log
threads 6
max-threads 128
server-user nscd
debug-level 5
paranoia no
enable-cache passwd no
enable-cache group no
enable-cache hosts yes
positive-time-to-live hosts 5
negative-time-to-live hosts 20
suggested-size hosts 211
check-files hosts yes
persistent hosts yes
shared hosts yes
max-db-size hosts 33554432
相关参数的解释如下:

logfile debug-file-name

指定调试信息写入的文件名。

debug-level value

设置希望的调试级别。

threads number

这是启动的等待请求的线程数。最少将创建5个线程。

server-user user

如果设置了该选项,nscd将作为该用户运行,而不是作为root。如果每个用户都使用一个单独的缓存(-S参数),将忽略该选项。

enable-cache service <yes|no>

启用或禁用制定的 服务 缓存。

positive-time-to-live service value

设置 service 在指定缓存中正的项目(成功的请求)的TTL(存活时间)。 Value 以秒为单位。较大的值将增加缓存命中率从而减低平均响应时间,但是将增加缓存的一致性问题。

negative-time-to-live service value

设置 service 在指定缓存中负的项目(失败的请求)的TTL(存活时间)。 Value 以秒为单位。如果存在由不在系统数据库中的uid(用户ID)(例如在以root身份解包linux 内核源代码时)所拥有的文件将明显改善性能;应该维持较小的值以降低缓存一致性问题。

suggested-size service value

这是内部散列表的大小, value 应该保持一个素数以达到优化效果。

check-files service <yes|no>

启用或禁用检查属于指定 服务 的文件的改变。这些文件是 /etc/passwd, /etc/group, 以及/etc/hosts。 
二、nscd 服务查看和清除
 
默认该服务在redhat或centos下是关闭的,可以通过services nscd start开启。缓存DB文件在/var/db/nscd下。可以通过nscd -g查看统计的信息,这里列出部分:
 
[root@361way ~]# nscd -g
nscd configuration:
5 server debug level
34d 23h 14m 18s server runtime
6 current number of threads
128 maximum number of threads
0 number of times clients had to wait
no paranoia mode enabled
3600 restart internal
5 reload count
passwd cache:
no cache is enabled
no cache is persistent
no cache is shared
0 suggested size
0 total data pool size
0 used data pool size
3600 seconds time to live for positive entries
20 seconds time to live for negative entries
0 cache hits on positive entries
0 cache hits on negative entries
0 cache misses on positive entries
0 cache misses on negative entries
0% cache hit rate
0 current number of cached values
0 maximum number of cached values
0 maximum chain length searched
0 number of delays on rdlock
0 number of delays on wrlock
0 memory allocations failed
yes check /etc/passwd for changes
清除缓存
nscd -i passwd
nscd -i group
nscd -i hosts
除了上面的方法,重启nscd服务同样可以达到清理cache的目的。
 
三、nscd的效果
 
首先要看网络和dns服务器的能力,dns解析越慢,dns缓存的优势就越大.比如我们在北京用的dns服务器202.106.0.20和google的dns服务器8.8.8.8速度会差不少.

如果dns服务器比较稳定,那它对效率的影响就是一个常数.这个常数有多大呢?

我简单试了一下.在局域网内进行压力测试,压一个nginx下的静态页面,使用202.106.0.20这个dns服务器,不用dns缓存.平均一分钟可以访问27万次.压一个简单的php页面,平均一分钟可以访问22万次.加上nscd服务后,静态页面平均一分钟可以访问120万次,要快4倍多.php页面平均一分钟可以访问50万次,快一倍多.

如果是做搜索引擎或是一些代理服务类的项目,比如短信通道,数据推送服务,这个性能提升还是比较可观的.但在一般的项目中,一台服务器每分钟发22万次请求的情况是很少见的,所以这个性能提升也微呼其微.

但在追求极限的道路上,每一小步都至关重要噢~
 
原文链接:http://www.361way.com/linux-ns ... .html
 

PHP中把stdClass Object转array的几个方法

PHPzkbhj 发表了文章 • 0 个评论 • 1363 次浏览 • 2017-03-01 14:36 • 来自相关话题

PHP和JS通讯通常都用json,但用 json 传过来的数组并不是标准的array,而是 stdClass 类型。那么我们可以参考下面的几个方法进行转换。
 
方法一:
//PHP stdClass Object转array
function object_array($array) {
if(is_object($array)) {
$array = (array)$array;
} if(is_array($array)) {
foreach($array as $key=>$value) {
$array[$key] = object_array($value);
}
}
return $array;
}方法二:
$array = json_decode(json_encode(simplexml_load_string($xmlString)),TRUE);方法三:
function object2array_pre(&$object) {
if (is_object($object)) {
$arr = (array)($object);
} else {
$arr = &$object;
}
if (is_array($arr)) {
foreach($arr as $varName => $varValue){
$arr[$varName] = $this->object2array($varValue);
}
}
return $arr;
}```


如果是10W的数据量的话,执行要进1s,结构再复杂些,可以达到3s, 性能太差了
可以用以下替换:

function object2array(&$object) {

$object = json_decode( json_encode( $object),true);
return $object;
}


但是对json的特性,只能是针对utf8的,否则得先转码下。 查看全部
PHP和JS通讯通常都用json,但用 json 传过来的数组并不是标准的array,而是 stdClass 类型。那么我们可以参考下面的几个方法进行转换。
 
方法一:
//PHP stdClass Object转array  
function object_array($array) {
if(is_object($array)) {
$array = (array)$array;
} if(is_array($array)) {
foreach($array as $key=>$value) {
$array[$key] = object_array($value);
}
}
return $array;
}
方法二:
$array = json_decode(json_encode(simplexml_load_string($xmlString)),TRUE);
方法三:
 function object2array_pre(&$object) {
if (is_object($object)) {
$arr = (array)($object);
} else {
$arr = &$object;
}
if (is_array($arr)) {
foreach($arr as $varName => $varValue){
$arr[$varName] = $this->object2array($varValue);
}
}
return $arr;
}```


如果是10W的数据量的话,执行要进1s,结构再复杂些,可以达到3s, 性能太差了
可以用以下替换:

function object2array(&$object) {

$object = json_decode( json_encode( $object),true);
return $object;
}


但是对json的特性,只能是针对utf8的,否则得先转码下。

#工作总结#对于周末服务器502问题的分享会总结笔记

总结zkbhj 发表了文章 • 0 个评论 • 1688 次浏览 • 2017-02-28 11:02 • 来自相关话题

一、问题场景复现:
 
  周六早上9:55左右,ZR的APP间接性出现首页、列表页和详情页无法访问的问题,提示用户“后台接口异常”。通过排查得知,部分接口请求返回的结果是502,通过进一步排查,得知出现502的原因是因为后台应用服务器一共两台,其中一台的php-fpm服务异常,无法处理用户请求导致。(该台服务器周五的时候,运维同事修改过日志归档整理脚本,也是由于这个改动引起的这个问题,后面会说明)
 
二、处理方式:
 
  排查到这个原因后,立即将服务器的php-fpm服务进行了重启操作,解决了线上服务几乎不可用的状态。
  (有问题的正确做法是:摘掉有问题的机器,让正常服务的机器对外提供服务。然后对有问题的机器进行问题排查,分析并找到问题产生的原因,并对问题进行总结和修复,并对其他机器进行排查是否同样有此问题或可能会产生此问题,避免同样的问题再次发生)
 
三、问题回顾及分析:
 
  在得知线上的问题产生的原因是php-fpm服务挂掉引起的,那是什么原因导致的fpm服务器被“处死”了呢?
  通过运维的监控数据分析得知,被改过归档日志脚本的这台机器,在服务器做完归档日志之后,fpm的数量陆续减少,而且在稍后一个时间段有断点,最后在9点50分左右变为0,即线上问题爆发的时间点前后。





 
然后对修改的脚本日志进行检查,发现日志归档脚本里对fpm进行reload的命令里,有这样一个命令:
 





 
 
其中,用到的是(-HUP信号)kill -HUP `cat $PIDFILE` || echo -n " can't reload"








然而,PHP官方源码中提供的PHP-FPM reload方法中,用的则是(-USR2信号):kill -USR2 `cat $php_fpm_PID`




 
PHP官方源码截图(https://github.com/php/php-src/blob/master/sapi/fpm/init.d.php-fpm.in)
 
问题就出在这!PHP-FPM对HUP和SUR2这两个信号处理方式上的区别。

在PHP-FPM中,对于HUP信号,会进行的操作是重启fpm服务,而USR2信号,则是仅仅对fpm的配置文件进行重载,并不会重启fpm的服务(master)。

 
对于nginx的这些信号,不同的服务有其各自的处理方式,然而,FPM并没有像大家预想的那样,正是这个差异,让FPM服务在这个脚本命令执行之后,master主服务被“杀死”,而且没有顺利重新启动(报错,报端口9000被占用,因为此时,fpm的works们并没有停止服务,还在接受这请求)。
 
FPM如何处理各个指令,可以研究源码,地址:https://github.com/php/php-src/blob/e3feeba3aedd8e4347fefa315effd7d4f9fa0ca1/sapi/fpm/fpm/fpm_signals.c 
 
来看一条来自维基百科的解释(https://zh.wikipedia.org/wiki/SIGUSR1%E5%92%8CSIGUSR2 ):

SIG是信号名的通用前缀。USR是user-defined的缩写,即用户定义的。
SIGUSR1和SIGUSR2的含义在POSIX中没有定义。它们的用途在不同的程序中可能有所不同。
 
USR1亦通常被用来告知应用程序重载配置文件;
例如,向Apache HTTP服务器发送一个USR1信号将导致以下步骤的发生:停止接受新的连接,等待当前连接停止,重新载入配置文件,重新打开日志文件,重启服务器,从而实现相对平滑的不关机的更改。

 
然而,对HUP命令的常规描述是:

kill -HUP pid 或者 killall -HUP pName:
其中pid是进程标识,pName是进程的名称。如果想要更改配置而不需停止并重新启动服务,可以使用上面两个命令。在对配置文件作必要的更改后,发出该命令以动态更新服务配置。根据约定,当你发送一个挂起信号(信号1或HUP)时,大多数服务器进程(所有常用的进程)都会进行复位操作并重新加载它们的配置文件。

 如果按照上面这个“常规”的用法理解,咱们的设置并没有问题!但是,FPM就是那么“隔路”!!!所以,要看一个命令是否符合自己的预期,一定要进行测试或者使用官方提供的方式。





 
从上面线上服务器php-fpm.conf的配置项中可以看到,fpm配置了static模式,并且指定了50个children数,每个worker处理的最大请求数是2048(至于为何要进行重启,这是一种自我保护和修复的机制,就像是路由器,每天闲时自动重启一遍,会运行的更加稳定)。正是这50个(可能更少,最多50)worker,支撑了3点之后这段时间内的50*2048(最多,会少于这些)个请求。直至所有worker全部“死掉”之后,线上服务出现了问题。
 
四、问题总结:
 
  针对此次线上问题,应该总结:
关键业务节点完善报警机制运维方面,nginx要健全健康检查所有的脚本,使用官方提供的源码;网上找的脚本要进行测试关键业务,增加机器出问题先摘掉机器,以便于排查问题原因
 
五、扩展:
 
  关于fpm如何处理请求,可以参考文章《php-fpm解读-进程管理的三种模式》:http://www.jianshu.com/p/c9a028c834ff
 
六、其他:
 
fpm服务重启:/etc/init.d/php-fpm start/stop/restart
php-fpm执行kill下列命令后的结果: 





-HUP会杀死进程
此时再去启动php-fpm服务时,报错端口被占用
 

-USR2顺利重新启动服务(更换了PID)
-USR1未做任何操作(PID未更新)
 
 
SIGTERM
程序结束(terminate)信号, 与SIGKILL不同的是该信号可以被阻塞和处理。通常用来要求程序自己正常退出,shell命令kill缺省产生这个信号。如果进程终止不了,我们才会尝试SIGKILL。
参考文档:http://blog.csdn.net/qq646232041/article/details/45642103
  查看全部
一、问题场景复现:
 
  周六早上9:55左右,ZR的APP间接性出现首页、列表页和详情页无法访问的问题,提示用户“后台接口异常”。通过排查得知,部分接口请求返回的结果是502,通过进一步排查,得知出现502的原因是因为后台应用服务器一共两台,其中一台的php-fpm服务异常,无法处理用户请求导致。(该台服务器周五的时候,运维同事修改过日志归档整理脚本,也是由于这个改动引起的这个问题,后面会说明)
 
二、处理方式:
 
  排查到这个原因后,立即将服务器的php-fpm服务进行了重启操作,解决了线上服务几乎不可用的状态。
  (有问题的正确做法是:摘掉有问题的机器,让正常服务的机器对外提供服务。然后对有问题的机器进行问题排查,分析并找到问题产生的原因,并对问题进行总结和修复,并对其他机器进行排查是否同样有此问题或可能会产生此问题,避免同样的问题再次发生)
 
三、问题回顾及分析:
 
  在得知线上的问题产生的原因是php-fpm服务挂掉引起的,那是什么原因导致的fpm服务器被“处死”了呢?
  通过运维的监控数据分析得知,被改过归档日志脚本的这台机器,在服务器做完归档日志之后,fpm的数量陆续减少,而且在稍后一个时间段有断点,最后在9点50分左右变为0,即线上问题爆发的时间点前后。

112.png

 
然后对修改的脚本日志进行检查,发现日志归档脚本里对fpm进行reload的命令里,有这样一个命令:
 

113.png

 
 
其中,用到的是(-HUP信号)
kill -HUP `cat $PIDFILE` || echo -n " can't reload"








然而,PHP官方源码中提供的PHP-FPM reload方法中,用的则是(-USR2信号):
kill -USR2 `cat $php_fpm_PID`

114.png

 
PHP官方源码截图(https://github.com/php/php-src/blob/master/sapi/fpm/init.d.php-fpm.in
 
问题就出在这!PHP-FPM对HUP和SUR2这两个信号处理方式上的区别。


在PHP-FPM中,对于HUP信号,会进行的操作是重启fpm服务,而USR2信号,则是仅仅对fpm的配置文件进行重载,并不会重启fpm的服务(master)。


 
对于nginx的这些信号,不同的服务有其各自的处理方式,然而,FPM并没有像大家预想的那样,正是这个差异,让FPM服务在这个脚本命令执行之后,master主服务被“杀死”,而且没有顺利重新启动(报错,报端口9000被占用,因为此时,fpm的works们并没有停止服务,还在接受这请求)。
 
FPM如何处理各个指令,可以研究源码,地址:https://github.com/php/php-src/blob/e3feeba3aedd8e4347fefa315effd7d4f9fa0ca1/sapi/fpm/fpm/fpm_signals.c 
 
来看一条来自维基百科的解释(https://zh.wikipedia.org/wiki/SIGUSR1%E5%92%8CSIGUSR2 ):


SIG是信号名的通用前缀。USR是user-defined的缩写,即用户定义的。
SIGUSR1和SIGUSR2的含义在POSIX中没有定义。它们的用途在不同的程序中可能有所不同。
 
USR1亦通常被用来告知应用程序重载配置文件;
例如,向Apache HTTP服务器发送一个USR1信号将导致以下步骤的发生:停止接受新的连接,等待当前连接停止,重新载入配置文件,重新打开日志文件,重启服务器,从而实现相对平滑的不关机的更改。


 
然而,对HUP命令的常规描述是:


kill -HUP pid 或者 killall -HUP pName:
其中pid是进程标识,pName是进程的名称。如果想要更改配置而不需停止并重新启动服务,可以使用上面两个命令。在对配置文件作必要的更改后,发出该命令以动态更新服务配置。根据约定,当你发送一个挂起信号(信号1或HUP)时,大多数服务器进程(所有常用的进程)都会进行复位操作并重新加载它们的配置文件。


 如果按照上面这个“常规”的用法理解,咱们的设置并没有问题!但是,FPM就是那么“隔路”!!!所以,要看一个命令是否符合自己的预期,一定要进行测试或者使用官方提供的方式。

115.png

 
从上面线上服务器php-fpm.conf的配置项中可以看到,fpm配置了static模式,并且指定了50个children数,每个worker处理的最大请求数是2048(至于为何要进行重启,这是一种自我保护和修复的机制,就像是路由器,每天闲时自动重启一遍,会运行的更加稳定)。正是这50个(可能更少,最多50)worker,支撑了3点之后这段时间内的50*2048(最多,会少于这些)个请求。直至所有worker全部“死掉”之后,线上服务出现了问题。
 
四、问题总结:
 
  针对此次线上问题,应该总结:
  1. 关键业务节点完善报警机制
  2. 运维方面,nginx要健全健康检查
  3. 所有的脚本,使用官方提供的源码;网上找的脚本要进行测试
  4. 关键业务,增加机器
  5. 出问题先摘掉机器,以便于排查问题原因

 
五、扩展:
 
  关于fpm如何处理请求,可以参考文章《php-fpm解读-进程管理的三种模式》:http://www.jianshu.com/p/c9a028c834ff
 
六、其他:
 
fpm服务重启:/etc/init.d/php-fpm start/stop/restart
php-fpm执行kill下列命令后的结果: 
55566.png


-HUP会杀死进程
此时再去启动php-fpm服务时,报错端口被占用
 

-USR2顺利重新启动服务(更换了PID)
-USR1未做任何操作(PID未更新)
 
 
SIGTERM
程序结束(terminate)信号, 与SIGKILL不同的是该信号可以被阻塞和处理。通常用来要求程序自己正常退出,shell命令kill缺省产生这个信号。如果进程终止不了,我们才会尝试SIGKILL。
参考文档:http://blog.csdn.net/qq646232041/article/details/45642103
 

ELK(elastic-search, logstash, kibana)日志分析系统

工具软件zkbhj 发表了文章 • 0 个评论 • 1526 次浏览 • 2017-02-24 16:53 • 来自相关话题

一、简介

1、核心组成

ELK由Elasticsearch、Logstash和Kibana三部分组件组成;

Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

Logstash是一个完全开源的工具,它可以对你的日志进行收集、分析,并将其存储供以后使用

kibana 是一个开源和免费的工具,它可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

2、四大组件

Logstash: logstash server端用来搜集日志;

Elasticsearch: 存储各类日志;

Kibana: web化接口用作查寻和可视化日志;

Logstash Forwarder: logstash client端用来通过lumberjack 网络协议发送日志到logstash server;

3、ELK工作流程

在需要收集日志的所有服务上部署logstash,作为logstash agent(logstash shipper)用于监控并过滤收集日志,将过滤后的内容发送到Redis,然后logstash indexer将日志收集在一起交给全文搜索服务ElasticSearch,可以用ElasticSearch进行自定义搜索通过Kibana 来结合自定义搜索进行页面展示。





 4、ELK的帮助手册

ELK官网:https://www.elastic.co/

ELK官网文档:https://www.elastic.co/guide/index.html

ELK中文手册:http://kibana.logstash.es/content/elasticsearch/monitor/logging.html
 
注释:ELK有两种安装方式

(1)集成环境:Logstash有一个集成包,里面包括了其全套的三个组件;也就是安装一个集成包。

(2)独立环境:三个组件分别单独安装、运行、各司其职。(比较常用)

本实验也以第二种方式独立环境来进行演示;单机版主机地址为:192.168.1.104
 
原文地址:http://467754239.blog.51cto.com/4878013/1700828/
http://www.jianshu.com/p/53ff25a23a07
正则表达式验证工具:http://grokdebug.herokuapp.com/
中文手册:https://kibana.logstash.es/  
http://www.ibm.com/developerworks/cn/opensource/os-cn-elk/
http://blog.csdn.net/zoubf/article/details/55252015
  查看全部
一、简介

1、核心组成

ELK由Elasticsearch、Logstash和Kibana三部分组件组成;

Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

Logstash是一个完全开源的工具,它可以对你的日志进行收集、分析,并将其存储供以后使用

kibana 是一个开源和免费的工具,它可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

2、四大组件

Logstash: logstash server端用来搜集日志;

Elasticsearch: 存储各类日志;

Kibana: web化接口用作查寻和可视化日志;

Logstash Forwarder: logstash client端用来通过lumberjack 网络协议发送日志到logstash server;

3、ELK工作流程

在需要收集日志的所有服务上部署logstash,作为logstash agent(logstash shipper)用于监控并过滤收集日志,将过滤后的内容发送到Redis,然后logstash indexer将日志收集在一起交给全文搜索服务ElasticSearch,可以用ElasticSearch进行自定义搜索通过Kibana 来结合自定义搜索进行页面展示。

wKioL1YWGBnxpAwyAAGFWRpT6X8070.jpg

 4、ELK的帮助手册

ELK官网:https://www.elastic.co/

ELK官网文档:https://www.elastic.co/guide/index.html

ELK中文手册:http://kibana.logstash.es/content/elasticsearch/monitor/logging.html
 
注释:ELK有两种安装方式

(1)集成环境:Logstash有一个集成包,里面包括了其全套的三个组件;也就是安装一个集成包。

(2)独立环境:三个组件分别单独安装、运行、各司其职。(比较常用)

本实验也以第二种方式独立环境来进行演示;单机版主机地址为:192.168.1.104
 
原文地址:http://467754239.blog.51cto.com/4878013/1700828/
http://www.jianshu.com/p/53ff25a23a07
正则表达式验证工具:http://grokdebug.herokuapp.com/
中文手册:https://kibana.logstash.es/  
http://www.ibm.com/developerworks/cn/opensource/os-cn-elk/
http://blog.csdn.net/zoubf/article/details/55252015
 

需要知道的知识点

总结zkbhj 发表了文章 • 0 个评论 • 1687 次浏览 • 2017-02-24 12:19 • 来自相关话题

swoole
kafaka(ELK)
nginx
apache
linux系统(权限、文件)
如何让一个目录的php脚本不被解析
如何让php程序只对一个目录有可写权限
sql注入
xss攻击
mysql
字符
php原理
PHP手册
swoole
kafaka(ELK)
nginx
apache
linux系统(权限、文件)
如何让一个目录的php脚本不被解析
如何让php程序只对一个目录有可写权限
sql注入
xss攻击
mysql
字符
php原理
PHP手册

吞吐量(Throughput)、QPS、并发数、响应时间(RT)对系统性能的影响

服务器zkbhj 发表了文章 • 0 个评论 • 2262 次浏览 • 2017-02-23 19:13 • 来自相关话题

首先对吞吐量(TPS)、QPS、并发数、响应时间(RT)几个概念一直比较模糊,也不知道哪些指标可以较好的衡量系统的性能。今天特意查了些资料做一些记录:首先看一些概念(来自百度百科) 
1. 响应时间(RT) 
响应时间是指系统对请求作出响应的时间。直观上看,这个指标与人对软件性能的主观感受是非常一致的,因为它完整地记录了整个计算机系统处理请求的时间。由于一个系统通常会提供许多功能,而不同功能的处理逻辑也千差万别,因而不同功能的响应时间也不尽相同,甚至同一功能在不同输入数据的情况下响应时间也不相同。所以,在讨论一个系统的响应时间时,人们通常是指该系统所有功能的平均时间或者所有功能的最大响应时间。当然,往往也需要对每个或每组功能讨论其平均响应时间和最大响应时间。 
对于单机的没有并发操作的应用系统而言,人们普遍认为响应时间是一个合理且准确的性能指标。需要指出的是,响应时间的绝对值并不能直接反映软件的性能的高低,软件性能的高低实际上取决于用户对该响应时间的接受程度。对于一个游戏软件来说,响应时间小于100毫秒应该是不错的,响应时间在1秒左右可能属于勉强可以接受,如果响应时间达到3秒就完全难以接受了。而对于编译系统来说,完整编译一个较大规模软件的源代码可能需要几十分钟甚至更长时间,但这些响应时间对于用户来说都是可以接受的。 

2. 吞吐量(Throughput) 
     吞吐量是指系统在单位时间内处理请求的数量。对于无并发的应用系统而言,吞吐量与响应时间成严格的反比关系,实际上此时吞吐量就是响应时间的倒数。前面已经说过,对于单用户的系统,响应时间(或者系统响应时间和应用延迟时间)可以很好地度量系统的性能,但对于并发系统,通常需要用吞吐量作为性能指标。 
对于一个多用户的系统,如果只有一个用户使用时系统的平均响应时间是t,当有你n个用户使用时,每个用户看到的响应时间通常并不是n×t,而往往比n×t小很多(当然,在某些特殊情况下也可能比n×t大,甚至大很多)。这是因为处理每个请求需要用到很多资源,由于每个请求的处理过程中有许多步骤难以并发执行,这导致在具体的一个时间点,所占资源往往并不多。也就是说在处理单个请求时,在每个时间点都可能有许多资源被闲置,当处理多个请求时,如果资源配置合理,每个用户看到的平均响应时间并不随用户数的增加而线性增加。实际上,不同系统的平均响应时间随用户数增加而增长的速度也不大相同,这也是采用吞吐量来度量并发系统的性能的主要原因。一般而言,吞吐量是一个比较通用的指标,两个具有不同用户数和用户使用模式的系统,如果其最大吞吐量基本一致,则可以判断两个系统的处理能力基本一致。 

3. 并发用户数 
并发用户数是指系统可以同时承载的正常使用系统功能的用户的数量。与吞吐量相比,并发用户数是一个更直观但也更笼统的性能指标。实际上,并发用户数是一个非常不准确的指标,因为用户不同的使用模式会导致不同用户在单位时间发出不同数量的请求。一网站系统为例,假设用户只有注册后才能使用,但注册用户并不是每时每刻都在使用该网站,因此具体一个时刻只有部分注册用户同时在线,在线用户就在浏览网站时会花很多时间阅读网站上的信息,因而具体一个时刻只有部分在线用户同时向系统发出请求。这样,对于网站系统我们会有三个关于用户数的统计数字:注册用户数、在线用户数和同时发请求用户数。由于注册用户可能长时间不登陆网站,使用注册用户数作为性能指标会造成很大的误差。而在线用户数和同事发请求用户数都可以作为性能指标。相比而言,以在线用户作为性能指标更直观些,而以同时发请求用户数作为性能指标更准确些。 

4. QPS每秒查询率(Query Per Second) 
每秒查询率QPS是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准,在因特网上,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。对应fetches/sec,即每秒的响应请求数,也即是最大吞吐能力。 

从以上概念来看吞吐量和响应时间是衡量系统性能的重要指标,QPS虽然和吞吐量的计量单位不同,但应该是成正比的,任何一个指标都可以含量服务器的并行处理能力。当然Throughput更关心数据量,QPS更关心处理笔数。 

QPS提升带来什么?QPS提升说明单台服务器处理能力提升,如果QPS提升1倍,服务器资源减少1半,或者说服务器不变可以支撑2倍的请求量。 
如何提升QPS? 
1)减少CPU的使用时间(哪些代码会消耗CPU:循环、字符串拼接\查找\替换、编码\解码、序列化\反序列化、压缩) 
2)增加CPU的数量 
3)减少同步锁 
(如果CPU不能被压到85%以上,并且此时的QPS已经达到了峰值,则说明另有瓶颈,接下去关注内存) 
RT提升带来什么? 
响应速度提升说明单次请求的处理速度提升,用户感觉任务处理速度更快,系统反应速度更快。当然在处理能力不变的情况下,RT的提升必然会提升QPS。 
如何提升RT? 
1)减少I/O的响应时间 
2)减少I/O的调用次数 
3)减少CPU使用时间(当然在I/O占大头的应用里,这方面优化效果肯定不明显) 
 
QPS和TPS的区别 
QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。

TPS:是TransactionsPerSecond的缩写,也就是事务数/秒。它是软件测试结果的测量单位。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。
 
吞吐量和TPS不是同一个概念,给你举个例子吧,比如一个水龙头开一晚上出水10t,而10个水龙头开1s中出水0.1t,你能说一个水龙头的出水能力比10个水龙头的强么?所以,我们要加个单位时间,看谁1s的出水量大,这就是吞吐率,即TPS。明白了吧。吞吐量中的那个单位时间我们通常是以系统运行的时间为单位比如10分钟。而TPS中的单位时间通常是s。

追问:
我是否可以这样理解:
1、TPS就是通过的事务数\时间
2、吞吐量是和请求数量相关的
 
-------------------------------------华丽丽的分割线-------------------------------------------------

一個系統的吞度量(承壓能力)與request對CPU的消耗、外部接口、IO等等緊密關聯。

單個reqeust 對CPU消耗越高,外部系統接口、IO影響速度越慢,系統吞吐能力越低,反之越高。

系統吞吐量幾個重要參數:QPS(TPS)、並發數、響應時間

QPS(TPS):每秒鐘request/事務 數量

並發數: 系統同時處理的request/事務數

響應時間: 一般取平均響應時間

(很多人經常會把並發數和TPS理解混淆)

理解了上面三個要素的意義之後,就能推算出它們之間的關係:

QPS(TPS)= 並發數/平均響應時間

一個系統吞吐量通常由QPS(TPS)、並發數兩個因素決定,每套系統這兩個值都有一個相對極限值,在應用場景訪問壓力下,只要某一項達到系統最高值,系統的吞吐量就上不去了,如果壓力繼續增大,系統的吞吐量反而會下降,原因是系統超負荷工作,上下文切換、內存等等其它消耗導致系統性能下降。
  查看全部
首先对吞吐量(TPS)、QPS、并发数、响应时间(RT)几个概念一直比较模糊,也不知道哪些指标可以较好的衡量系统的性能。今天特意查了些资料做一些记录:首先看一些概念(来自百度百科) 
1. 响应时间(RT) 
响应时间是指系统对请求作出响应的时间。直观上看,这个指标与人对软件性能的主观感受是非常一致的,因为它完整地记录了整个计算机系统处理请求的时间。由于一个系统通常会提供许多功能,而不同功能的处理逻辑也千差万别,因而不同功能的响应时间也不尽相同,甚至同一功能在不同输入数据的情况下响应时间也不相同。所以,在讨论一个系统的响应时间时,人们通常是指该系统所有功能的平均时间或者所有功能的最大响应时间。当然,往往也需要对每个或每组功能讨论其平均响应时间和最大响应时间。 
对于单机的没有并发操作的应用系统而言,人们普遍认为响应时间是一个合理且准确的性能指标。需要指出的是,响应时间的绝对值并不能直接反映软件的性能的高低,软件性能的高低实际上取决于用户对该响应时间的接受程度。对于一个游戏软件来说,响应时间小于100毫秒应该是不错的,响应时间在1秒左右可能属于勉强可以接受,如果响应时间达到3秒就完全难以接受了。而对于编译系统来说,完整编译一个较大规模软件的源代码可能需要几十分钟甚至更长时间,但这些响应时间对于用户来说都是可以接受的。 

2. 吞吐量(Throughput) 
     吞吐量是指系统在单位时间内处理请求的数量。对于无并发的应用系统而言,吞吐量与响应时间成严格的反比关系,实际上此时吞吐量就是响应时间的倒数。前面已经说过,对于单用户的系统,响应时间(或者系统响应时间和应用延迟时间)可以很好地度量系统的性能,但对于并发系统,通常需要用吞吐量作为性能指标。 
对于一个多用户的系统,如果只有一个用户使用时系统的平均响应时间是t,当有你n个用户使用时,每个用户看到的响应时间通常并不是n×t,而往往比n×t小很多(当然,在某些特殊情况下也可能比n×t大,甚至大很多)。这是因为处理每个请求需要用到很多资源,由于每个请求的处理过程中有许多步骤难以并发执行,这导致在具体的一个时间点,所占资源往往并不多。也就是说在处理单个请求时,在每个时间点都可能有许多资源被闲置,当处理多个请求时,如果资源配置合理,每个用户看到的平均响应时间并不随用户数的增加而线性增加。实际上,不同系统的平均响应时间随用户数增加而增长的速度也不大相同,这也是采用吞吐量来度量并发系统的性能的主要原因。一般而言,吞吐量是一个比较通用的指标,两个具有不同用户数和用户使用模式的系统,如果其最大吞吐量基本一致,则可以判断两个系统的处理能力基本一致。 

3. 并发用户数 
并发用户数是指系统可以同时承载的正常使用系统功能的用户的数量。与吞吐量相比,并发用户数是一个更直观但也更笼统的性能指标。实际上,并发用户数是一个非常不准确的指标,因为用户不同的使用模式会导致不同用户在单位时间发出不同数量的请求。一网站系统为例,假设用户只有注册后才能使用,但注册用户并不是每时每刻都在使用该网站,因此具体一个时刻只有部分注册用户同时在线,在线用户就在浏览网站时会花很多时间阅读网站上的信息,因而具体一个时刻只有部分在线用户同时向系统发出请求。这样,对于网站系统我们会有三个关于用户数的统计数字:注册用户数、在线用户数和同时发请求用户数。由于注册用户可能长时间不登陆网站,使用注册用户数作为性能指标会造成很大的误差。而在线用户数和同事发请求用户数都可以作为性能指标。相比而言,以在线用户作为性能指标更直观些,而以同时发请求用户数作为性能指标更准确些。 

4. QPS每秒查询率(Query Per Second) 
每秒查询率QPS是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准,在因特网上,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。对应fetches/sec,即每秒的响应请求数,也即是最大吞吐能力。 

从以上概念来看吞吐量和响应时间是衡量系统性能的重要指标,QPS虽然和吞吐量的计量单位不同,但应该是成正比的,任何一个指标都可以含量服务器的并行处理能力。当然Throughput更关心数据量,QPS更关心处理笔数。 

QPS提升带来什么?QPS提升说明单台服务器处理能力提升,如果QPS提升1倍,服务器资源减少1半,或者说服务器不变可以支撑2倍的请求量。 
如何提升QPS? 
1)减少CPU的使用时间(哪些代码会消耗CPU:循环、字符串拼接\查找\替换、编码\解码、序列化\反序列化、压缩) 
2)增加CPU的数量 
3)减少同步锁
 
(如果CPU不能被压到85%以上,并且此时的QPS已经达到了峰值,则说明另有瓶颈,接下去关注内存) 
RT提升带来什么? 
响应速度提升说明单次请求的处理速度提升,用户感觉任务处理速度更快,系统反应速度更快。当然在处理能力不变的情况下,RT的提升必然会提升QPS。 
如何提升RT? 
1)减少I/O的响应时间 
2)减少I/O的调用次数 
3)减少CPU使用时间(当然在I/O占大头的应用里,这方面优化效果肯定不明显) 

 
QPS和TPS的区别 
QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。

TPS:是TransactionsPerSecond的缩写,也就是事务数/秒。它是软件测试结果的测量单位。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。
 
吞吐量和TPS不是同一个概念,给你举个例子吧,比如一个水龙头开一晚上出水10t,而10个水龙头开1s中出水0.1t,你能说一个水龙头的出水能力比10个水龙头的强么?所以,我们要加个单位时间,看谁1s的出水量大,这就是吞吐率,即TPS。明白了吧。吞吐量中的那个单位时间我们通常是以系统运行的时间为单位比如10分钟。而TPS中的单位时间通常是s。

追问:
我是否可以这样理解:
1、TPS就是通过的事务数\时间
2、吞吐量是和请求数量相关的
 
-------------------------------------华丽丽的分割线-------------------------------------------------

一個系統的吞度量(承壓能力)與request對CPU的消耗、外部接口、IO等等緊密關聯。

單個reqeust 對CPU消耗越高,外部系統接口、IO影響速度越慢,系統吞吐能力越低,反之越高。

系統吞吐量幾個重要參數:QPS(TPS)、並發數、響應時間

QPS(TPS):每秒鐘request/事務 數量

並發數: 系統同時處理的request/事務數

響應時間: 一般取平均響應時間

(很多人經常會把並發數和TPS理解混淆)

理解了上面三個要素的意義之後,就能推算出它們之間的關係:

QPS(TPS)= 並發數/平均響應時間

一個系統吞吐量通常由QPS(TPS)、並發數兩個因素決定,每套系統這兩個值都有一個相對極限值,在應用場景訪問壓力下,只要某一項達到系統最高值,系統的吞吐量就上不去了,如果壓力繼續增大,系統的吞吐量反而會下降,原因是系統超負荷工作,上下文切換、內存等等其它消耗導致系統性能下降。
 

TCP/IP协议解析

常识zkbhj 发表了文章 • 0 个评论 • 2997 次浏览 • 2017-02-23 18:26 • 来自相关话题

 

c5131475jw1f7bqx4yi0og20j60r6jtq.gif

 

凯冰科技旧系统迁移梳理

升级更新zkbhj 发表了文章 • 0 个评论 • 2256 次浏览 • 2017-02-22 14:13 • 来自相关话题

1、辽宁大学考试专题1
http://www.zkbhj.com/lnutest/
http://www.zkbhj.com/lnutest2/

2、文章详情页
http://www.zkbhj.com/articles/?id=2875
http://www.zkbhj.com/show/news.asp?id=2114

3、网址导航
http://www.zkbhj.com/123/

4、网站更新大事记
http://www.zkbhj.com/2012/
http://www.zkbhj.com/2013/

5、活动专题
2014国庆节
http://www.zkbhj.com/2014101/

6、凯冰相册
http://www.zkbhj.com/Album/list.php
http://www.zkbhj.com/Album/?id=26

7、板块
http://www.zkbhj.com/art/
http://www.zkbhj.com/tec/
http://www.zkbhj.com/news/
http://www.zkbhj.com/music/
http://www.zkbhj.com/soft/
http://www.zkbhj.com/project/
http://www.zkbhj.com/fumu/index.html
http://www.zkbhj.com/message/
http://www.zkbhj.com/zkbhj/
http://www.zkbhj.com/zkbhj/growth.php
http://www.zkbhj.com/me/
http://www.zkbhj.com/resume/

8、专栏作家平台
http://www.zkbhj.com/autherAdmin/login.php

9、辽宁大学网上同学录
http://www.zkbhj.com/CShome/login.php

10、凯冰资源库
http://www.zkbhj.com/bank/

11、工具
http://www.zkbhj.com/kits/rgb.html
http://www.zkbhj.com/kits/creat_ercode.php
http://www.zkbhj.com/kits/share_weixin.php
http://www.zkbhj.com/subway/


12、后台管理
http://www.zkbhj.com/kbweb_newadmin/login/

13、M站
http://www.zkbhj.com/wap/
m.zkbhj.com

14、 查看全部

502 Bad Gateway出现的原因以及解决办法

服务器zkbhj 发表了文章 • 0 个评论 • 1790 次浏览 • 2017-02-20 10:31 • 来自相关话题

  502 bad gateway通常出现在Nginx服务器中,其中造成的原因也比较多样性,其中对用户访问请求的响应超时造成的情况最为常见,那么502 Bad Gateway该怎么解决呢,下面我们就分情况介绍一下502 Bad Gateway的主要原因与解决方法。
 
什么是502 bad gateway 报错

简单来说 502 是报错类型代码 bad gateway 错误的网关。是Web服务器作为网关或代理服务器时收到无效的响应。 用我们的口语说就是运行网站的服务器暂时挂了(不响应)。

产生错误的原因

1.连接超时 我们向服务器发送请求 由于服务器当前链接太多,导致服务器方面无法给于正常的响应,产生此类报错

2.Nginx本身设置等cgi接口返回的数据延时太短,要延长这个时间。如同前面说的,很多情况下并非Nginx本身的问题,这样操作后常常并不能缓解问题。

此时,就要考虑对应cgi接口的配置,比如 php-fpm.conf 的配置,脚本执行时间的超时情况限制。这可以通过跟踪php-fpm的 slow log 来排查,对相关代码优化,减少延时。

3.另外很大的问题在MySQL数据库这一块,如果数据库执行命令超时也会大延长php脚本的执行时间,导致 Nginx 等待超时。可以my.cnf的 slow log进行确认效能低下的sql语句是哪些,进行优化配置。

502 bad gateway解决方法

普通访客

一般情况下稍候访问或者按下快捷键 ctrl+F5强制刷新一下,这样就是重新向服务器发送请求了。再或者清理一下电脑的缓冲文件.(如果一直都是这样,我们就只能等管理员来解决)

管理员

1.查看当前的PHP FastCGI进程数是否够用

netstat -anpo | grep "php-cgi" | wc -l

如果实际使用的"FastCGI进程数"接近预设的"FastCGI进程数",那么,说明"FastCGI进程数"不够用,需要增大。

2.部分PHP程序的执行时间超过了Nginx的等待时间,可以适当增加nginx.conf配置文件中FastCGI的timeout时间。

其他方法:

1.提高 Web 服务器的响应速度,也即减少内部的调用关系,可以把需要的页面、素材或数据,缓存在内存中,可以是专门的缓存服务器 ,也可以Web服务器自身的缓存,提高响应速度;

2.网络带宽的问题,则对传输的数据包进行压缩处理,或者向IDC申请增加带宽;

3.属于内部网络的故障或设置问题,也即内部网络拥塞,可能内部存在大量的数据调用或交互造成的,则需要优化内部网络传输或协议;

4.数据库的数据读取造成前端服务器 ,响应用户的请求变慢,那么必须提高数据库的处理能力,若是只读业务可以增加数据缓存的模式 或者增加数据库备机,分散读压力;
 
参考文档:
http://mt.sohu.com/20161223/n476739428.shtml
http://www.linuxidc.com/Linux/2016-03/128812.htm
http://www.cnblogs.com/siqi/p/3658771.html
  查看全部
  502 bad gateway通常出现在Nginx服务器中,其中造成的原因也比较多样性,其中对用户访问请求的响应超时造成的情况最为常见,那么502 Bad Gateway该怎么解决呢,下面我们就分情况介绍一下502 Bad Gateway的主要原因与解决方法。
 
什么是502 bad gateway 报错

简单来说 502 是报错类型代码 bad gateway 错误的网关。是Web服务器作为网关或代理服务器时收到无效的响应。 用我们的口语说就是运行网站的服务器暂时挂了(不响应)。

产生错误的原因

1.连接超时 我们向服务器发送请求 由于服务器当前链接太多,导致服务器方面无法给于正常的响应,产生此类报错

2.Nginx本身设置等cgi接口返回的数据延时太短,要延长这个时间。如同前面说的,很多情况下并非Nginx本身的问题,这样操作后常常并不能缓解问题。

此时,就要考虑对应cgi接口的配置,比如 php-fpm.conf 的配置,脚本执行时间的超时情况限制。这可以通过跟踪php-fpm的 slow log 来排查,对相关代码优化,减少延时。

3.另外很大的问题在MySQL数据库这一块,如果数据库执行命令超时也会大延长php脚本的执行时间,导致 Nginx 等待超时。可以my.cnf的 slow log进行确认效能低下的sql语句是哪些,进行优化配置。

502 bad gateway解决方法

普通访客

一般情况下稍候访问或者按下快捷键 ctrl+F5强制刷新一下,这样就是重新向服务器发送请求了。再或者清理一下电脑的缓冲文件.(如果一直都是这样,我们就只能等管理员来解决)

管理员

1.查看当前的PHP FastCGI进程数是否够用

netstat -anpo | grep "php-cgi" | wc -l

如果实际使用的"FastCGI进程数"接近预设的"FastCGI进程数",那么,说明"FastCGI进程数"不够用,需要增大。

2.部分PHP程序的执行时间超过了Nginx的等待时间,可以适当增加nginx.conf配置文件中FastCGI的timeout时间。

其他方法:

1.提高 Web 服务器的响应速度,也即减少内部的调用关系,可以把需要的页面、素材或数据,缓存在内存中,可以是专门的缓存服务器 ,也可以Web服务器自身的缓存,提高响应速度;

2.网络带宽的问题,则对传输的数据包进行压缩处理,或者向IDC申请增加带宽;

3.属于内部网络的故障或设置问题,也即内部网络拥塞,可能内部存在大量的数据调用或交互造成的,则需要优化内部网络传输或协议;

4.数据库的数据读取造成前端服务器 ,响应用户的请求变慢,那么必须提高数据库的处理能力,若是只读业务可以增加数据缓存的模式 或者增加数据库备机,分散读压力;
 
参考文档:
http://mt.sohu.com/20161223/n476739428.shtml
http://www.linuxidc.com/Linux/2016-03/128812.htm
http://www.cnblogs.com/siqi/p/3658771.html
 

面试初中级开发工程师需要注意的方面

面试zkbhj 发表了文章 • 0 个评论 • 1644 次浏览 • 2017-02-17 10:15 • 来自相关话题

1、逻辑思维能力:抛出一个场景,让面试者思考如何实现,从中提出问题,考察面试者的逻辑思维能力;
2、学习能力:从学历、意愿、自己的项目(github\blog),是否经常参加社团活动、是否经常阅读技术书籍,已经自驱能力等;
3、成长规划:对自己的定位、最近一年的规划计划;
4、基本技能:PHP基本技能、前端、服务器、缓存、数据库、设计模式、工具使用、框架等;
5、沟通能力:职业经历中遇到的通过自己的努力解决问题的事情;面试过程中的说话谈吐;
6、
  查看全部
1、逻辑思维能力:抛出一个场景,让面试者思考如何实现,从中提出问题,考察面试者的逻辑思维能力;
2、学习能力:从学历、意愿、自己的项目(github\blog),是否经常参加社团活动、是否经常阅读技术书籍,已经自驱能力等;
3、成长规划:对自己的定位、最近一年的规划计划;
4、基本技能:PHP基本技能、前端、服务器、缓存、数据库、设计模式、工具使用、框架等;
5、沟通能力:职业经历中遇到的通过自己的努力解决问题的事情;面试过程中的说话谈吐;
6、