zoukankan      html  css  js  c++  java
  • php特级课---4、网站服务监控(常用网站服务监控软件有哪些)

    php特级课---4、网站服务监控(常用网站服务监控软件有哪些)

    一、总结

    一句话总结:这些是架构师的知识

    网络流量监控:cacti,mrtg
    邮件报警系统:postfix
    压力测试工具:Apache压力测试软件-ab,Mysql压力测试-mysqlslap

    1、cacti是什么?

    网络流量监测图形分析工具

    Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。

    2、Postfix是什么(邮件报警)?

    邮件传输代理软件

    postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件。postfix是Wietse Venema想要为使用最广泛的sendmail提供替代品的一个尝试。在Internet世界中,大部分的电子邮件都是通过sendmail来投递的,大约有100万用户使用sendmail,每天投递上亿封邮件。这真是一个让人吃惊的数字。Postfix试图更快、更容易管理、更安全,同时还与sendmail保持足够的兼容性。

    • Linux邮件系统:
    • 1)postfix发邮件系统
    • 2)sendmail发邮件系统
    • 3)dovecot由邮件系统

    3、mrtg是什么?

    监控网络链路流量负载:Multi Router Traffic Grapher

    Multi Router Traffic Grapher------MRTG是一个监控网络链路流量负载的工具软件,通过snmp协议得到设备的流量信息,并将流量负载以包含PNG格式的图形的HTML 文档方式显示给用户,以非常直观的形式显示流量负载。

    4、Apache压力测试软件有什么?

    ab:apache自带的压力测试软件ab测试

    1.apache自带的压力测试软件ab测试
    2. apache benchmark,apache基准测试
    工具
    3.由httpd-2.2.3-43.el5.centos软件提供
    4.ab压力测试时,可能要创建很多测试文件
    并删除

    5、Mysql压力测试工具有什么?

    mysqlslap

    MySQL从5.1.4版开始带有一个压力测试工具
    mysqlslap,通过模拟多个并发客户端访问
    mysql来执行测试,使用起来非常的简单

    二、带图片的问题

    1、cacti是什么?

    网络流量监测图形分析工具

    Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。

    三、Apache ab 压力并发测试工具

    当你使用PHP(或其他编程语言)完成一个web程序的开发,并且web程序在Apache服务器上正常运行的时候,你有没有考虑过对你的Apache服务器及部署在其上的web程序进行一些压力测试呢?毕竟,真金不怕火炼,只要配置优化合理、程序代码运行性能良好、硬件撑得住,通过压力测试我们就能看到一个喜人的成绩。话又说回来,即使测试结果差强人意或者糟糕透了,我们也可以好好反思并找到「问题出在哪里」。说了这么多废话,其实就是想告诉你一句:对服务器以及网站程序进行压力测试还是很有必要的。

    要对Apache及其上的web程序进行压力测试其实非常简单,我们也不用再额外下载安装什么测试工具,因为Apache HTTP Server已经给我们准备了一个压力测试工具——ab。

    ab,即Apache Benchmark,只要我们安装了Apache,就能够在Apache的安装目录中找到它。它的居住地址是Apache安装目录/bin/ab.exe。现在,我们就来看看如何使用ab.exe来进行压力测试。

    在使用之前我们先来学习一下ab的用法。首先,我们输入cmd打开DOS窗口,然后将更改当前工作目录为:Apache安装目录/bin/。然后键入帮助命令ab -help(或者ab /?ab -h),我们就可以看到如下的用法介绍界面。

    常用命令 : ab -n 1000 -c 10 127.0.0.1/index.php //使用绝对路径! 1000次访问并发量为 10 

    ab的用法介绍

    通过上面的用法介绍可以得知,ab的使用方法就是输入如下DOS命令:

    ab [可选的参数选项] 需要进行压力测试的url

    此外,我们再根据上面的用法介绍界面来详细了解每个参数选项的作用。

    -n
    即requests,用于指定压力测试总共的执行次数。
    -c
    即concurrency,用于指定压力测试的并发数。
    -t
    即timelimit,等待响应的最大时间(单位:秒)。
    -b
    即windowsize,TCP发送/接收的缓冲大小(单位:字节)。
    -p
    即postfile,发送POST请求时需要上传的文件,此外还必须设置-T参数。
    -u
    即putfile,发送PUT请求时需要上传的文件,此外还必须设置-T参数。
    -T
    即content-type,用于设置Content-Type请求头信息,例如:application/x-www-form-urlencoded,默认值为text/plain
    -v
    即verbosity,指定打印帮助信息的冗余级别。
    -w
    以HTML表格形式打印结果。
    -i
    使用HEAD请求代替GET请求。
    -x
    插入字符串作为table标签的属性。
    -y
    插入字符串作为tr标签的属性。
    -z
    插入字符串作为td标签的属性。
    -C
    添加cookie信息,例如:"Apache=1234"(可以重复该参数选项以添加多个)。
    -H
    添加任意的请求头,例如:"Accept-Encoding: gzip",请求头将会添加在现有的多个请求头之后(可以重复该参数选项以添加多个)。
    -A
    添加一个基本的网络认证信息,用户名和密码之间用英文冒号隔开。
    -P
    添加一个基本的代理认证信息,用户名和密码之间用英文冒号隔开。
    -X
    指定使用的代理服务器和端口号,例如:"126.10.10.3:88"。
    -V
    打印版本号并退出。
    -k
    使用HTTP的KeepAlive特性。
    -k
    使用HTTP的KeepAlive特性。
    -d
    不显示百分比。
    -S
    不显示预估和警告信息。
    -g
    输出结果信息到gnuplot格式的文件中。
    -e
    输出结果信息到CSV格式的文件中。
    -r
    指定接收到错误信息时不退出程序。
    -h
    显示用法信息,其实就是ab -help

    虽然ab可以配置的参数选项比较多,但是,一般情况下我们只需要使用形如ab -n 数字 -c 数字 url路径的命令即可。譬如,我们对位于本地Apache服务器上、URL为localhost/index.php的页面进行压力测试。测试总次数为1000,并发数为100(相当于100个用户同时访问,他们总共访问1000次)。我们输入DOS命令ab -n 1000 -c 100 localhost/index.php,打印结果如下:

    F:Apache2.2in>ab -n 1000 -c 100 localhost/index.php
    This is ApacheBench, Version 2.3 <$Revision: 655654 $>
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Licensed to The Apache Software Foundation, http://www.apache.org/
    
    Benchmarking localhost (be patient)
    Completed 100 requests
    Completed 200 requests
    Completed 300 requests
    Completed 400 requests
    Completed 500 requests
    Completed 600 requests
    Completed 700 requests
    Completed 800 requests
    Completed 900 requests
    Completed 1000 requests
    Finished 1000 requests
    
    
    Server Software:        Apache/2.2.25 (服务器软件名称及版本信息)
    Server Hostname:        localhost (服务器主机名)
    Server Port:            80 (服务器端口)
    Document Path:          /index.php (供测试的URL路径)
    Document Length:        10 bytes (供测试的URL返回的文档大小)
    Concurrency Level:      100 (并发数)
    Time taken for tests:   0.247 seconds (压力测试消耗的总时间)
    Complete requests:      1000 (压力测试的总次数)
    Failed requests:        0 (失败的请求数)
    Write errors:           0 (网络连接写入错误数)
    Total transferred:      198000 bytes (传输的总数据量)
    HTML transferred:       10000 bytes (HTML文档的总数据量)
    Requests per second:    4048.34 [#/sec] (mean) (平均每秒的请求数)
    Time per request:       24.701 [ms] (mean) (所有并发用户(这里是100)都请求一次的平均时间)
    Time per request:       0.247 [ms] (mean, across all concurrent requests) (单个用户请求一次的平均时间)
    Transfer rate:          782.78 [Kbytes/sec] received (传输速率,单位:KB/s)
    Connection Times (ms)
                  min  mean[+/-sd] median   max
    Connect:        0    0   0.3      0       1
    Processing:     6   23   4.2     24      30
    Waiting:        5   20   5.3     21      29
    Total:          6   23   4.2     24      30
    
    Percentage of the requests served within a certain time (ms)
      50%     24
      66%     25
      75%     26
      80%     26
      90%     27
      95%     27
      98%     28
      99%     29
     100%     30 (longest request)

    在上面的测试中,我们设置的压力测试总次数以及并发数并没有让服务器感觉到什么「压力」,现在我们再来看一个「压力山大」的执行命令:ab -n 100000 -c 1000 localhost/index.php,这个时候apache就直接罢工——拒绝访问了:

    F:Apache2.2in>ab -n 100000 -c 1000 localhost/index.php
    This is ApacheBench, Version 2.3 <$Revision: 655654 $>
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Licensed to The Apache Software Foundation, http://www.apache.org/
    
    Benchmarking localhost (be patient)  
    Test aborted after 10 failures
    apr_socket_connect(): 由于目标计算机积极拒绝,无法连接。   (730061)

    注意:在上面的压力测试中,Apache使用的是默认配置,并没有经过任何优化措施处理。实际上,Apache在经过配置优化后,只要服务器硬件够用,Apache服务器是能够撑起1000的并发量的。

     

    测试 redis 的并发

    <?php
        $redis = new redis();
        $redis->connect('127.0.0.1', 6379);
    
        $time = date("Ymd H:i:s");
        $redis->rpush('list1', $time);
       
        echo "队列总长度:".$redis->lLen('list1');
        echo "<br/>";
        
       /* 
        while (true) { //出对
            $get = $redis->lpop('list');
            if ($get) {
                echo '出队列--' . $get;
                echo '<br/>';
            } else {
                echo '出队完成';
                return false;
            }
        
        }*/

    参考: Apache ab 压力并发测试工具 - 弃身锋刃 - 博客园
    https://www.cnblogs.com/wtcl/p/6795740.html

     
     

    三、25个Linux性能监控工具

    一段时间以来,我们在网上向读者介绍了如何为Linux以及类Linux操作系统配置多种不同的性能监控工具。在这篇文章中我们将罗列一系列使用最频繁的性能监控工具,并对介绍到的每一个工具提供了相应的简介链接,大致将其划分为两类,基于命令行的和提供图形化接口的。

    一、基于命令行的性能监控工具

    1.dstat - 多类型资源统计工具

    该命令整合了vmstatiostatifstat三种命令。同时增加了新的特性和功能可以让你能及时看到各种的资源使用情况,从而能够使你对比和整合不同的资源使用情况。通过不同颜色和区块布局的界面帮助你能够更加清晰容易的获取信息。它也支持将信息数据导出到cvs格式文件中,从而用其他应用程序打开,或者导入到数据库中。你可以用该命令来监控cpu,内存和网络状态随着时间的变化

    2.atop - 相比top更好的ASCII码体验

    这个使用ASCII码显示方式的命令行工具是一个显示所有进程活动的性能监控工具。它可以展示每日的系统日志以进行长期的进程活动分析,并高亮显示过载的系统使用资源。它包含了CPU,内存,交换空间,磁盘和网络层的度量指标。所有这些功能只需在终端运行atop即可。

    1. # atop

    当然你也可以使用交互界面来显示数据并进行排序。

    3.Nmon - 类Unix系统的性能监控

    Nmon是Nigel's Monitor缩写,它最早开发用来作为AIX的系统监控工具。如果使用在线模式,可以使用光标键在屏幕上操作实时显示在终端上的监控信息。使用捕捉模式能够将数据保存为CSV格式,方便进一步的处理和图形化展示。

    更多的信息参考我们的nmon性能监控文章

    4.slabtop - 显示内核slab缓存信息

    这个应用能够显示缓存分配器是如何管理Linux内核中缓存的不同类型的对象。这个命令类似于top命令,区别是它的重点是实时显示内核slab缓存信息。它能够显示按照不同排序条件来排序显示缓存列表。它同时也能够显示一个slab层信息的统计信息的题头。举例如下:

    1. # slabtop --sort=a
    2. # slabtop -s b
    3. # slabtop -s c
    4. # slabtop -s l
    5. # slabtop -s v
    6. # slabtop -s n
    7. # slabtop -s o

    更多信息参阅内核slab缓存文章

    5.sar - 性能监控和瓶颈检查

    sar 命令可以将操作系统上所选的累积活动计数器内容信息输出到标准输出上。其基于计数值和时间间隔参数的审计系统,会按照指定的时间间隔输出指定次数的监控信息。如果时间间隔参数为设置为0,那么sar命令将会显示系统从开机到当时时刻的平均统计信息。有用的命令如下:

    1. # sar -u 2 3
    2. # sar -u -f /var/log/sa/sa05
    3. # sar -P ALL 1 1
    4. # sar -r 1 3
    5. # sar -W 1 3

    6.Saidar - 简单的统计监控工具

    Saidar是一个简单轻量的系统信息监控工具。虽然它无法提供大多性能报表,但是它能够通过一个简单明了的方式显示最有用的系统运行状况数据。你可以很容易地看到运行时间、平均负载、CPU、内存、进程、磁盘和网络接口统计信息。

    1. Usage: saidar [-d delay] [-c] [-v] [-h]
    2.  
    3. -d 设置更新时间(秒)
    4. -c 彩色显示
    5. -v 显示版本号
    6. -h 显示本帮助

    7.top - 经典的Linux任务管理工具

    作为一个广为人知的Linux工具,top是大多数的类Unix操作系统任务管理器。它可以显示当前正在运行的进程的列表,用户可以按照不同的条件对该列表进行排序。它主要显示了系统进程对CPU和内存的使用状况。top可以快速检查是哪个或哪几个进程挂起了你的系统。你可以在这里看到top使用的例子。 你可以在终端输入top来运行它并进入到交互模式:

    1. 交互模式的一些快捷操作:
    2.  
    3. 全局命令: <回车/空格> ?, =, A, B, d, G, h, I, k, q, r, s, W, Z
    4. 统计区的命令: l, m, t, 1
    5. 任务区的命令:
    6. 外观: b, x, y, z 内容: c, f, H, o, S, u 大小: #, i, n 排序: <, >, F, O, R
    7. 色彩方案: <Ret>, a, B, b, H, M, q, S, T, w, z, 0 - 7
    8. 窗口命令: -, _, =, +, A, a, G, g, w

    8.Sysdig - 系统进程的高级视图

    Sysdig是一个能够让系统管理员和开发人员以前所未有方式洞察其系统行为的监控工具。其开发团队希望改善系统级的监控方式,通过提供关于存储,进程,网络和内存子系统的统一有序以及粒度可见的方式来进行错误排查,并可以创建系统活动记录文件以便你可以在任何时间轻松分析。

    简单例子:

    1. # sysdig proc.name=vim
    2. # sysdig -p"%proc.name %fd.name" "evt.type=accept and proc.name!=httpd"
    3. # sysdig evt.type=chdir and user.name=root
    4. # sysdig -l
    5. # sysdig -L
    6. # sysdig -c topprocs_net
    7. # sysdig -c fdcount_by fd.sport "evt.type=accept"
    8. # sysdig -p"%proc.name %fd.name" "evt.type=accept and proc.name!=httpd"
    9. # sysdig -c topprocs_file
    10. # sysdig -c fdcount_by proc.name "fd.type=file"
    11. # sysdig -p "%12user.name %6proc.pid %12proc.name %3fd.num %fd.typechar %fd.name" evt.type=open
    12. # sysdig -c topprocs_cpu
    13. # sysdig -c topprocs_cpu evt.cpu=0
    14. # sysdig -p"%evt.arg.path" "evt.type=chdir and user.name=root"
    15. # sysdig evt.type=open and fd.name contains /etc

    更多信息 可以在 如何利用sysdig改善系统层次的监控和错误排查

    9.netstat - 显示开放的端口和连接

    它是Linux管理员使用来显示各种网络信息的工具,如查看什么端口开放和什么网络连接已经建立以及何种进程运行在该连接之上。同时它也显示了不同程序间打开的Unix套接字的信息。作为大多数Linux发行版本的一部分,netstat的许多命令在 netstat和它的不同输出中有详细的描述。最为常用的如下:

    1. $ netstat | head -20
    2. $ netstat -r
    3. $ netstat -rC
    4. $ netstat -i
    5. $ netstat -ie
    6. $ netstat -s
    7. $ netstat -g
    8. $ netstat -tapn

    10.tcpdump - 洞察网络封包

    tcpdump可以用来查看网络连接封包内容。它显示了传输过程中封包内容的各种信息。为了使得输出信息更为有用,它允许使用者通过不同的过滤器获取自己想要的信息。可以参照的例子如下:

    1. # tcpdump -i eth0 not port 22
    2. # tcpdump -c 10 -i eth0
    3. # tcpdump -ni eth0 -c 10 not port 22
    4. # tcpdump -w aloft.cap -s 0
    5. # tcpdump -r aloft.cap
    6. # tcpdump -i eth0 dst port 80

    你可以文章“在topdump和捕捉包”中找到详细描述。

    11.vmstat - 虚拟内存统计信息

    vmstat是虚拟内存(virtual memory statistics)的缩写,作为一个内存监控工具,它收集和显示关于内存进程终端分页I/O阻塞的概括信息。作为一个开源程序,它可以在大部分Linux发行版本中找到,包括Solaris和FreeBSD。它用来诊断大部分的内存性能问题和其他相关问题。

    M更多信息 参考 vmstat命令文章

    12.free - 内存统计信息

    free是另一个能够在终端中显示内存和交换空间使用的命令行工具。由于它的简易,它经常用于快速查看内存使用或者是应用于不同的脚本和应用程序中。在这里你可以看到这个小程序的许多应用。几乎所有的系统管理员日常都会用这个工具。:-)

    13.Htop - 更加友好的top

    Htop基本上是一个top改善版本,它能够以更加多彩的方式显示更多的统计信息,同时允许你采用不同的方式进行排序,它提供了一个用户友好的接口。

    你可以在文章“关于htop和top的比较”中找到更多的信息 。

    14.ss - 网络管理的现代替代品

    ssiproute2包的一部分。iproute2是用来替代一整套标准的Unix网络工具组件,它曾经用来完成网络接口配置,路由表和管理ARP表任务。ss工具用来记录套接字统计信息,它可以显示类似netstat一样的信息,同时也能显示更多TCP和状态信息。一些例子如下:

    1. # ss -tnap
    2. # ss -tnap6
    3. # ss -tnap
    4. # ss -s
    5. # ss -tn -o state established -p

    15.lsof - 列表显示打开的文件

    lsof命令,意为“list open files”, 用于在许多类Unix系统中显示所有打开的文件及打开它们的进程。在大部分Linux发行版和其他类Linux操作系统中系统管理员用它来检查不同的进程打开了哪些文件。

    1. # lsof +p process_id
    2. # lsof | less
    3. # lsof –u username
    4. # lsof /etc/passwd
    5. # lsof –i TCP:ftp
    6. # lsof –i TCP:80

    你可以找到 更多例子 在lsof 文章

    16.iftop - 类似top的了网络连接工具

    iftop是另一个基于网络信息的类似top的程序。它能够显示当前时刻按照带宽使用量或者上传或者下载量排序的网络连接状况。它同时提供了下载文件的预估完成时间。

    更多信息可以参考网络流量iftop文章

    17.iperf - 网络性能工具

    iperf是一个网络测试工具,能够创建TCPUDP数据连接并在网络上测量它们的传输性能。它支持调节关于时间,协议和缓冲等不同的参数。对于每一个测试,它会报告带宽,丢包和其他的一些参数。

    如果你想用使用这个工具,可以参考这篇文章: 如何安装和使用iperf

    18.Smem - 高级内存报表工具

    Smem是最先进的Linux命令行工具之一,它提供关于系统中已经使用的和共享的实际内存大小,试图提供一个更为可靠的当前内存使用数据。

    1. $ smem -m
    2. $ smem -m -p | grep firefox
    3. $ smem -u -p
    4. $ smem -w -p

    参考我们的文章:Smem更多的例子

    二、图形化或基于Web的性能工具

    19.Icinga - Nagios的社区分支版本

    Icinga是一个开源免费的网络监控程序,作为Nagios的分支,它继承了前者现有的大部分功能,同时基于这些功能又增加了社区用户要求已久的功能和补丁。

    更多信息请参考安装和配置lcinga文章

    20.Nagios - 最为流行的监控工具

    作为在Linux上使用最为广泛和最为流行的监控方案,它有一个守护程序用来收集不同进程和远程主机的信息,这些收集到的信息都通过功能强大的web界面进行呈现。

    你可以在文章“如何安装nagios”里面找到更多的信息

    21.Linux process explorer - Linux下的procexp

    Linux process explorer是一个Linux下的图形化进程浏览工具。它能够显示不同的进程信息,如进程数,TCP/IP连接和每一个进程的性能指标。作为Windowsprocexp在Linux的替代品,是由Sysinternals开发的,其目标是比topps提供更好用户体验。

    查看 linux process explorer 文章获取更多信息。

    22.Collectl - 性能监控工具

    你可以既可以通过交互的方式使用这个性能监控工具,也可以用它把报表写到磁盘上,并通过web服务器来访问。它以一种易读易管理的格式,显示了CPU,磁盘,内存,网络,网络文件系统,进程,slabs等统计信息。

    更多 关于Collectl的文章

    23.MRTG - 经典网络流量监控图形工具

    这是一个采用rrdtool的生成图形的流量监控工具。作为最早的提供图形化界面的流量监控工具,它被广泛应用在类Unix的操作系统中。查看我们关于如何使用MRTG的文章获取更多关于安装和配置的信息。

    24.Monit - 简单易用的监控工具

    Monit是一个用来监控进程系统加载文件系统目录文件等的开源的Linux工具。你能够让它自动化维护和修复,也能够在运行错误的情景下执行特定动作或者发邮件报告提醒系统管理员。如果你想要用这个工具,你可以查看如何使用Monit的文章

    25.Munin - 为服务器提供监控和提醒服务

    作为一个网络资源监控工具,Munin能够帮助分析资源趋势和查看薄弱环节以及导致产生性能问题的原因。开发此软件的团队希望它能够易用和用户体验友好。该软件是用Perl开发的,并采用rrdtool来绘制图形,使用了web界面进行呈现。开发人员推广此应用时声称当前已有500多个监控插件可以“即插即用*”。

    参考:25个Linux性能监控工具 - peter316 - 博客园
    https://www.cnblogs.com/peter316/p/6287212.html

     
  • 相关阅读:
    关于jstl.jar引用问题及解决方法
    React 解析/ 第二节 使用 Reac
    NOde.js的安装和简介
    JACOB调用控件函数
    Linux 常用命令
    webService接口发布失败问题
    CommonsMultipartFile---用Spring实现文件上传
    验证签名(章)是否有效的方法
    新起点,新征程
    使用C#正则表达式获取必应每日图片地址
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/9840420.html
Copyright © 2011-2022 走看看