精华内容
下载资源
问答
  • 本例要求针对Zabbix服务器设置严重事件告警,当登录用户数超过5个或者运行进程数超过500个时,发送告警邮件给zabbix服务器的root用户。 依次配置报警媒介、报警媒介类型、动作 配置监控项及触发器 模拟用户登录数...

    7.1 问题

    本例要求针对Zabbix服务器设置严重事件告警,当登录用户数超过5个或者运行进程数超过500个时,发送告警邮件给zabbix服务器的root用户。

    1. 依次配置报警媒介、报警媒介类型、动作
    2. 配置监控项及触发器
    3. 模拟用户登录数超标(比如同时登录7个用户)
    4. 在zabbix服务器上收取root用户的邮件,可以看到告警消息

    7.2 方案

    zabbix监控系统的事件通知机制,如图-32所示。

    图-32

    7.3 步骤

    实现此案例需要按照如下步骤进行。

    步骤一:配置报警媒介类型(谁负责发送告警邮件、如何发送)

    管理-->报警媒介类型-->Email,正确设置可用来发送电子邮件的服务器(这里选用本机自带的邮件服务)信息、发件人电子邮箱地址,如图-33所示。

    图-33

    步骤二:配置报警媒介(告警邮件发送给谁)

    管理-->用户-->选择用户XX-->报警媒介。

    比如,可以为用户Admin添加邮件报警,接收通知的邮箱地址为root@zbx.tedu.cn, 如图-34、图-35所示。

    图-34

    图-35

    步骤三:配置动作

    配置-->动作-->创建动作。

    比如,示警程度在“一般严重”以上时发送报警,如图-36、图-37所示。

    图-36

    图-37

    步骤四:配置监控项及触发器

    配置-->主机-->选中主机-->触发器-->创建触发器。

    比如,当登录用户数超过5个时生成“一般严重”事件消息,如图-38、图-39所示。

    图-38

    图-39

    步骤五:模拟用户登录数超标

    在被控主机Zabbix server上同时打开多个命令行终端,也可以使用SecureCRT、Putty等工具远程登录到Zabbix server服务,来模拟超过5个用户登录的情况。

    具体过程略。

    步骤六:检查root用户收到告警邮件消息

    当设置的动作满足条件时,即发起对应的邮件告警操作,用户报警媒介对应的收件人电子邮箱中会收到通知邮件。比如当登录用户数超过5个时,root用户将会收到告警邮件,只需要在主机zbx.tedu.cn上查收邮件即可,如图-40所示。

    图-40

    同时,通过“监测”-->“仪表板”页面也会看到相应的问题报告,如图-41所示。通过单击“动作”下的小图标可以跟踪邮件发送状态。

    图-41

    展开全文
  • 客户端同时派生5个子进程,每进程在与服务器依次建立500次连接,每次连接请求4000字节的数据。因此,每客户端将与服务端建立2500连接。总共有5000次连接,而且任意时刻服务端最多存在10连接。使用的...

    一:客户端

             本章总结的服务器程序设计范式,使用同一个客户端程序进行测试。客户端运行在和服务器处于同一个子网上的两个不同主机上。每个客户端同时派生5个子进程,每个子进程在与服务器依次建立500次连接,每次连接请求4000个字节的数据。因此,每个客户端将与服务端建立2500个连接。总共有5000次连接,而且任意时刻服务端最多存在10个连接。使用的命令如下:

             client  206.62.226.36  8888  5  500  4000

     

    二:结论

             上图测量的时间仅仅是用于进程控制所需的CPU时间,以迭代服务器为基准(原因见下一节),从其他服务器的实际CPU时间中减去迭代服务器的实际CPU时间,就得到相应服务器用于进程控制所需的CPU时间。因为迭代服务器没有进程控制

     

             上图描述了,在预先创建子进程池的设计范式中,闲置子进程过多对CPU时间的影响。

     

             上图描述了,在预先创建子进程池和线程池的设计范式中,5000个连接在所有子进程或线程中的分布情况。

     

    三:TCP迭代服务器

             迭代TCP服务器总是在完全处理完某个客户的请求之后,才去处理下一个客户。因此这样的服务器程序比较少见。本章中用它作为测试基准,使用的测试命令如下:

    client  206.62.226.36  8888  1  5000  4000

     

             使用同样的TCP连接数5000,请求一样的字节数4000,但是同一时间只有一个连接,不进行进程控制,因而它的时间是最快的。

     

    四:TCP并发服务器程序,每个客户一个子进程

             传统上,并发服务器调用fork派生一个子进程来处理每个客户。这使得服务器能够同时为多个客户服务,每个进程一个客户

             绝大多数TCP服务器程序也按照这个范式编写。但是并发服务器的问题在于为每个客户现场fork一个子进程比较耗费CPU时间。在多年前的20世纪80年代后期,一个繁忙的服务器每天也就处理几百个亦或几千个客户,这点CPU时间是可以接受的。然而WEB应用的爆发式增长改变了人们的态度。繁忙的Web服务器每天测得TCP连接数以百万计,这还是就单个主机而言。

             以后讲解的各种技术,都是在避免并发服务器为每个客户现场fork的做法,不过传统意义上的并发服务器依然相当普遍。

             结论图1中的数据表明,传统意义的并发服务器所需CPU时间最多

     

    五:TCP预先派生子进程,accept无上锁保护

             使用预先派生子进程的技术,不像传统意义上的并发服务器那样,为每个客户现场派生子进程,而是在启动阶段预先派生一定数量的子进程,当各个客户连接到达时,这些子进程立即就能为他们服务。

             代码结构是:父进程启动完所有子进程之后,就进入睡眠。每个子进程中:

    for(; ;)

    {

                       connfd = accept(listenfd,  cliaddr,  &clilen);

                       web_child(connfd);

                       close(connfd);

    }

     

             在这种程序范式中,因为所有子进程和父进程共享同一个监听套接字。所以,当第一个客户连接到达时,所有子进程均被唤醒,因为所有子进程使用的监听套接字指向同一个socket结构。只有最先运行的那个子进程能获得客户连接,而其他子进程只能继续回复睡眠。

             这种现象称为惊群(thundering herd)问题。因为尽管只有一个子进程将获得连接,所有其他子进程却都被唤醒了。尽管如此这段代码依然起作用,只是每仅有一个连接准备好时,却唤醒太多进程的做法会导致性能受损。结论图2的数据表明了这种问题。

             结论图3给出了所有连接在子进程中的分布情况,可见当可用子进程阻塞在accept调用上时,内核调度算法把各个连接均匀地散布到各个子进程。

     

    六:TCP预先派生子进程,accept使用上锁保护

             有些系统不允许多个进程监听同一个套接字,在这些系统中,上述代码启动不久,某个子进程的accept可能就会返回EPROTO错误。

             解决办法是让每个子进程在调用accept前后安置某种类型的锁,这样任意时刻只有一个子进程阻塞在accept调用中,其他子进程则阻塞在试图获取用于保护accept的锁上。子进程中的代码结构如下:

    for(; ;)

    {

                       my_lock_wait();

                       connfd = accept(listenfd,  cliaddr, &clilen);

                       my_lock_release();

                       web_child(connfd);

                       close(connfd);

    }

     

             有多种方法可以提供上锁功能,可以使用fcntl函数记录锁,也可以使用线程互斥锁pthread_mutex_lock进行进程上的上锁。

             根据结论图1,可见这种上锁增加了服务器的进程控制CPU时间,但是线程互斥锁还是要快于记录锁的。

             根据结论图3,看见上锁时,操作系统还是均匀的把锁散步到等待线程中。

     

    七:TCP预先派生子进程,传递描述符

             这种设计是只让父进程调用accept,然后把所接受的已连接套接字“传递”给某个子进程。这么做绕过了为所有子进程的accept调用提供上锁保护的需求,不过需要从父进程到子进程的某种形式的描述符传递。这种技术会使代码多少有点复杂,因为父进程必须跟踪子进程的忙闲状态,以便给空闲子进程传递新的套接字。

             子进程中的代码结构如下,子进程阻塞在read_fd调用中,等待父进程传递描述符,收到描述符之后,处理客户请求。子进程在处理完客户请求之后,会向管道中写入一个字节,以通知父进程本子进程可重用(闲置状态):

    for ( ; ; )

    {

                       if ( (n = Read_fd(sockfd[1],  &c,  1,  &connfd))== 0)

                                          err_quit("read_fd returned0");

                       if (connfd < 0)

                                          err_quit("no descriptorfrom read_fd");

     

                       web_child(connfd);      /* process request */

                       Close(connfd);

     

                       Write(STDERR_FILENO, "", 1);    /* tell parent we're ready again */

    }

     

             根据结论图1,可见本服务器慢于所有其他子进程池的设计

     

    八:TCP并发服务器,每个客户一个线程

             使用线程代替子进程,客户连接到来时,现场创建一个线程处理客户请求,代码结构如下:

    主线程:

    for ( ;  ; )

    {

                       clilen = addrlen;

                       connfd = Accept(listenfd,  cliaddr,  &clilen);

     

                       Pthread_create(&tid,  NULL,  &doit, (void *) connfd);

    }

    子线程:

    void  * doit(void *arg)

    {

                       void   web_child(int);

     

                       Pthread_detach(pthread_self());

                       web_child((int) arg);

                       Close((int) arg);

                       return (NULL);

    }

     

             结论图1表明,这个简单的创建线程的版本快于所有预先派生子进程的版本。

     

    九:TCP预先创建线程,每个线程各自accept

             既然预先派生子进程快于为每个客户现场派生一个子进程,那么有理由相信预先创建一个线程池也快于为每个客户现场创建一个线程的做法。本节中的设计,是让每个线程各自调用accept,使用互斥锁加以保护,以保证任何时刻只有一个线程在调用accept

             结论图1表明,这样的设计确实快于每个客户现场一个线程的版创建线程池,事实上当前版本的服务器是所有版木之中最快的。

             结论图3表明,所有连接也均匀的分布在各个线程上了,这种均衡性是由线程调度算法带来的。

     

    十:TCP预先创建线程,主线程统一accept

             主线程在创建一个线程池之后,只让主线程调用accept,并把每个客户连接传递给池中某个可用线程。

             本设计范式的问题在于,主线程如何把一个已连接套接字传递给线程池中某个可用线程。

             可以如前使用描述符传递,不过既然所有线程和所有描述符都在同一个进程之内,我们没有必要把一个描述符从一个线程传递到另一个线程。接收线程只需知道这个已连接套接字描述符的值,而描述符传递实际传递的井非这个值,而是对这个套接字的一个引用,因而将返回一个不同于原值的描述符。

             所以,在多线程环境中,这实际上又是一个生产者消费者问题,主线程为一个生产者,所有子线程为多个消费者。

             根据结论图1,可见这个版本的服务器慢于上一节中的互斥锁保护accept的版本,这是因为生产者和消费者之间的同步问题造成的。

     

     

    摘自《Unix网络编程卷一:套接字联网API》第30章

     

    转载于:https://www.cnblogs.com/gqtcgq/p/7247248.html

    展开全文
  • Mac OS X: 64位对服务器的影响很大吗?

    千次阅读 2009-09-24 10:27:00
    Mac OS X: 雪豹的64位对服务器的影响很大吗? 有个问题是,64位系统是否真的有用呢? 根据你的应用的不同,对系统的性能要求的不同,64... 32位系统无论你的内存多大它都有限制,也就是:最多同时2,500个进程最多同时1

    Mac OS X: 雪豹的64位对服务器的影响很大吗?

     

    有个问题是,64位系统是否真的有用呢?

     

    根据你的应用的不同,对系统的性能要求的不同,64系统 可能 会提升系统的实际性能,但是也可能对于你没有太大用处。还是具体点让数据来说话吧。

     

    32位系统无论你的内存多大它都有限制,也就是:

    最多 同时2,500个进程

    最多 同时150,000个打开的文件vnodes

    最多 同时12,500个线程.

     

    64位系统有了一个变化,系统支持的最多资源限制,可以随着内存的增加而变化的. 具体说,每增加8GB的内存,就可以多支持, 2,500个进程和150,000个打开的文件vnodes . 而最高到96GB内存,可以支持:

    最多 同时30,000个进程

    最多 同时1,800,000个打开的文件vnodes

    最多 同时150,000个线程.

     

    可以使用终端命令显示当前系统支持的:

    sysctl -a

    sysctl kern.maxproc

    sysctl kern. maxvnodes

    sysctl kern.maxfiles

     

    详细情况可以参考Apple的官方文档:Mac OS X Server v10.6: Understanding process limits

     

     

    展开全文
  • tomcat web服务器之请求并发能力

    千次阅读 2015-11-13 13:51:53
    当一个进程500 个线程在跑的话,那性能已经是很低很低了。Tomcat 默认配置的最大请求数是 150,也就是说同时支持 150 个并发,当然了,也可以将其改大。

    Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,目前比较流行的Web 应用服务器。

    当一个进程有 500 个线程在跑的话,那性能已经是很低很低了。Tomcat 默认配置的最大请求数是 150,也就是说同时支持 150 个并发,当然了,也可以将其改大。

    当某个应用拥有 250 个以上并发的时候,应考虑应用服务器的集群。

    具体能承载多少并发,需要看硬件的配置,CPU 越多性能越高,分配给 JVM 的内存越多性能也就越高,但也会加重 GC 的负担。

    操作系统对于进程中的线程数有一定的限制:

    Windows 每个进程中的线程数不允许超过 2000
    Linux 每个进程中的线程数不允许超过 1000

    另外,在 Java 中每开启一个线程需要耗用 1MB 的 JVM 内存空间用于作为线程栈之用。

    Tomcat的最大并发数是可以配置的,实际运用中,最大并发数与硬件性能和CPU数量都有很大关系的。更好的硬件,更多的处理器都会使Tomcat支持更多的并发。同时使用系统的用户估计最多500人的话,Tomcat应该是没问题的。

    这个并发能力还与应用的逻辑密切相关,如果逻辑很复杂需要大量的计算,那并发能力势必会下降。如果每个请求都含有很多的数据库操作,那么对于数据库的性能也是非常高的。

    对于单台数据库服务器来说,允许客户端的连接数量是有限制的。


    展开全文
  • tomcat支持多少并发

    千次阅读 2019-12-30 11:41:47
    当一个进程500个线程在跑的话,那性能已经是很低很低了。Tomcat默认配置的最大请求数是150,也就是说同时支持150个并发,当然了,也可以将其改大。 当某个应用拥有250个以上并发的时候,应考虑应用服务器的集群。 ...
  • 入门学习Linux常用必会60命令实例详解doc/txt

    千次下载 热门讨论 2011-06-09 00:08:45
    Linux 是一真正的多用户操作系统,可以同时接受多用户登录,还允许一用户进行多次登录。这是因为Linux和许多版本的Unix一样,提供了虚拟控制台的访问方式,允许用户在同一时间从控制台(系统的控制台是与系统...
  • 千万数据接口同步

    2020-08-01 13:17:36
    通过ID分段同时启用三个进程同时跑 接收端:B服务器 采用thinkPHP5框架 通信加密采用openssl 一次500条数据批量插入 有抛错我会把错误的批次数据写入一个文件,把抛错信息写入另一个文件 数据跑完后用脚本单独处理...
  • ActiveMQ 有哪些优点和用处: ...假如有500w请求同时请求服务器,时间也很短,这就是多线程高并发的情况,然后我们在 服务器的前面添加一 MQ,这500w请求,每请求过来都给mq发送一消息,然后 这消...
  • 当一个进程500 个线程在跑的话,那性能已经是很低很低了。Tomcat 默认配置的最大请求数是 150,也就是说同时支持 150 个并发,当然了,也可以将其改大。 当某个应用拥有 250 个以上并发的时候,应考虑应用服务器...
  • Tomcat最大并发(1000)

    2014-09-18 09:19:47
    当一个进程500 个线程在跑的话,那性能已经是很低很低了。Tomcat 默认配置的最大请求数是 150,也就是说同时支持 150 个并发,当然了,也可以将其改大 当某个应用拥有 250 个以上并发的时候,应考虑应用服务器...
  • P486-P500 《Head First Java》20201028...我们想要让只能发送的版本可以维持原来的执行,同时有新的进程(process)并行地读取服务器的信息并将它显示在文本区域上。 Java的multithreading Java在语言中就有内置多线程
  • 当一个进程500 个线程在跑的话,那性能已经是很低很低了。Tomcat 默认配置的最大请求数是 150,也就是说同时支持 150 个并发,当然了,也可以将其改大。 当某个应用拥有 250 个以上并发的时候,应考虑应用服务器...
  • Tomcat的性能与最大并发(1000)

    千次阅读 2014-09-18 12:51:05
    当一个进程500个线程在跑的话,那性能已经是很低很低了。Tomcat默认配置的最大请求数是150,也就是说同时支持150个并发,当然了,也可以将其改大。当某个应用拥有250个以上并发的时候,应考虑应用服务器的集群。...
  • Tomcat的性能与最大并发(1000)

    千次阅读 2016-09-07 18:24:05
    当一个进程500个线程在跑的话,那性能已经是很低很低了。Tomcat 默认配置的最大请求数是 150,也就是说同时支持 150 个并发,当然了,也可以将其改大。 当某个应用拥有 250 个以上并发的时候,应考虑应用...
  • C#.net_经典编程例子400

    热门讨论 2013-05-17 09:25:30
    142 3.6 Process组件 143 实例102 使用Process组件访问本地进程 143 3.7 Timer组件 145 实例103 使用Timer组件制作计时器 145 实例104 使用Timer组件显示当前系统时间 150 实例105 ...
  • Tomcat的并发处理能力

    2020-02-04 14:07:47
    当一个进程500个线程在跑的话,那性能已经是很低很低了。Tomcat默认配置的最大请求数是150,也就是说同时支持150个并发,当然了,也可以将其改大。 当某个应用拥有250个以上并发的时候,应考虑应用服务器的集群...
  • Tomcat的性能与最大并发数

    万次阅读 2017-01-24 16:27:26
    当一个进程有 500 个线程在跑的话,那性能已经是很低很低了。Tomcat 默认配置的最大请求数是 150,也就是说同时支持 150 个并发,当然了,也可以将其改大。 当某个应用拥有 250 个以上并发的时候,应考虑...
  • Tomcat的性能与最大并发量

    千次阅读 2018-12-06 14:44:09
     当一个进程有 500 个线程在跑的话,那性能已经是很低很低了。Tomcat 默认配置的最大请求数是 150,也就是说同时支持 150 个并发,当然了,也可以将其改大。  当某个应用拥有 250 个以上并发的时候,应...
  • 当一个进程有 500 个线程在跑的话,那性能已经是很低很低了。Tomcat 默认配置的最大请求数是 150,也就是说同时支持 150 个并发,当然了,也可以将其改大。当某个应用拥有 250 个以上并发的时候,应考虑应用...

空空如也

空空如也

1 2 3 4 5
收藏数 95
精华内容 38
关键字:

服务器同时500个进程