一、并发的基本含义
        在操作系统中,并发是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。
在关系数据库中,允许多个用户同时访问和更改共享数据的进程。SQL Server 使用锁定以允许多个用户同时访问和更改共享数据而彼此之间不发生冲突。
在网络服务器上,并发是指同一时刻能处理的连接数,可以理解为服务器最多维护多少个会话数,比如,服务器能建立1000个TCP连接,即服务器同时维护了1000个socket,这个服务器的并发量就是1000,但是服务器可能只有单核或者8核,16核等,总之对这1000个socket连接的处理也是分时来做的。每个socket服务器处理的时间如果是1s,那么该服务器1s内可以处理完1000个请求,如果每个socket处理100ms的话,那么该服务器1s内可以处理10000个请求。
二、与并行区别
        并发:当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间 段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状。.这种方式我们称之为并发(Concurrent)。
并行:当系统有一个以上CPU时,则线程的操作有可能非并发。当一个CPU执行一个线程时,另一个CPU可以执行另一个线程,两个线程互不抢占CPU资源,可以同时进行,这种方式我们称之为并行(Parallel)。
        区别:并发和并行是即相似又有区别的两个概念,并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔内发生。在多道程序环境下,并发性是指在一段时间内宏观上有多个程序在同时运行,但在单处理机系统中,每一时刻却仅能有一道程序执行,故微观上这些程序只能是分时地交替执行。倘若在计算机系统中有多个处理机,则这些可以并发执行的程序便可被分配到多个处理机上,实现并行执行,即利用每个处理机来处理一个可并发执行的程序,这样,多个程序便可以同时执行。
三、IIS中的并发管理
        1、IIS中并发相关术语、设置
        ▲连接数、并发连接数:这两个概念网上的解释都是说不同的,但通过实验,笔者发现在IIS中他们一个概念,就是在对并发连接,即站点可以同时容纳客户请求的最高连接数做设置,而且我通过设置两个参数发现会互相影响。可能网上说的连接数是专指虚拟主机的环境吧。
        ▲最大并发工作线程数:简单的说就是IIS在并发连接请求过来时的处理机制,它会更机智的以某个数量级为单位来分批处理,让没有处理连接请求排队等待。比如最大并发工作线程数设置为50,当200个连接请求过来时,50个请求被处理,剩下的150会显示正在加载,而不是503的错误。这时其它用户就不要点刷新按钮了,因为点的越多,你的请求在排队队伍中越靠后。此项设置未在IIS中,而是修改ASP.NET配置文件machine.config(Win10默认位置:C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\ 修改参考:https://msdn.microsoft.com/zh-cn/library/7w2sway1.aspx)
        ▲应用程序池的队列长度:上一个概念提到请求排队,那是不是让所有未处理的都排队呢,显示是不合理的。通过此项可以设置排队的数量,超过数量的仍然返回503错误,与超过并发连接数一样的效果。
        ▲应用程序池的最大工作进程数:如果这个值大于 1,那么当有连接请求时会启动多个新的工作进程实例,可启动的最多进程数为您所指定的最大工作进程数,后续更多的请求将以循环的方式发送至工作进程,这个 每个工作进程都能承担负载一些连接请求,当然是以消耗cpu等硬件做代价,这是值得的,如果web服务器cpu使用率很低但是又需要更高效的处理并发连接 请求,为何不这么做呢?
        如果网站中用到了依赖进程的Session和Cache等对象,则不能保存在服务器内存中,存储方式选用StateServer或者SQLServer会更好,另外多个工作进程切换时会有上下文复制,这也是资源消耗更多地方
        最大工作进程数的设置方法:(拷贝)按照每工作进程能承载30个并发的原则来确定应用程序池的最大工作进程数。同时要注意,每个工作进程大约会占用 200M左右的系统内存,在设置最大工作进程数的时候,要主要最大工作进程数与200M的乘积不要超过系统最大可用内存数。一般情况下,建议按照每次增加 5个工作进程数的方式对最大工作进程数进行调整,调整完后对网站观察一段时间,如依然无法满足要求,再继续增加5个工作进程数。
        2、观察并发连接数
a:命令行方式查看IIS连接请求的状态统计
C:\>netstat -an |find "10.0.1.13:80" |find "ESTABLISHED" /C
1297
C:\>netstat -an |find "10.0.1.13:80" |find "TIME_WAIT" /C
129
b:利用nagios监控的windows客户端工具NSClient++-0.2.7对相应的计数器进行监控,超过一定的阈值则通过fetion报警!
c:计数器的添加,利用计数器可以图形化的展示出来。
步骤:运行命令 “perfmon.msc”打开性能监视器,点击添加计数器。计数器对象选择【Web Service】->【Current Connections】;对象实例选择【_Total】,也可根据需要选择具体的Web服务
实例;点击【添加】按钮,结果如下图所示。

将和本监控无关的信息删除,仅留下关心的Web服务信息。从多个客户端发出并发请求,可以监控到实时的并发连接数。根据图中显示结果,不难发现当前同时刻并发连接数为5个。

可以通过右击计数器打开属性对图表做一些设置,如颜色、步长等。

参考:http://blog.csdn.net/coolmeme/article/details/9997609
http://www.cnblogs.com/qmfsun/p/4997307.html
http://ylw6006.blog.51cto.com/470441/1058070/

转载于:https://www.cnblogs.com/net515/p/5894948.html

互联网开发(一) 并发基础知识相关推荐

  1. OpenGL开发之旅基础知识介绍

    最近由于手机项目中需要用到OpenGL ES的知识,所以这段时间正在研究OpenGL的相关知识.因为OpenGL ES是OpenGL的剪裁版本,所以我直接从OpenGL入手,然后再去看OpenGL E ...

  2. 微信小程序开发数据缓存基础知识辨析以及运用实例

    微信小程序开发数据缓存基础知识辨析以及运用实例 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的 ...

  3. 开课吧:Java开发学习路线-基础知识

    一般来说想要成为Java开发工程师,需要先了解清楚Java开发学习路线,而基础知识部分是整个路线里面最最重要的部分,也是后续进行框架学习.能看懂开源项目的前置基础,这部分是最不能忽视的! 基础知识: ...

  4. mysql 死锁监视器_并发基础知识:死锁和对象监视器

    mysql 死锁监视器 本文是我们名为Java Concurrency Essentials的学院课程的一部分. 在本课程中,您将深入探讨并发的魔力. 将向您介绍并发和并发代码的基础知识,并学习诸如原 ...

  5. 并发基础知识:死锁和对象监视器

    本文是我们学院课程中名为Java Concurrency Essentials的一部分 . 在本课程中,您将深入探讨并发的魔力. 将向您介绍并发和并发代码的基础知识,并学习诸如原子性,同步和线程安全之 ...

  6. 网站前端开发必会基础知识有哪些?

    自己工作做得好好的,怎么非要去搞前端?" 很多人离职的时候,可能印象最深的就是爸妈每天说的这句话.起因很简单,就是自己辞了爸妈眼中的"铁饭碗". 他也是如此,毅然辞去了一 ...

  7. 学习游戏软件开发需要哪些基础知识

    随着互联网技术的不断进步,游戏动画产业得到了大众的接受和尊重,现已发展成为最受欢迎的产业之一.许多游戏开发公司也变得越来越繁荣.许多游戏玩家开始转向游戏开发,学习游戏开发.他们必须了解游戏开发的基础需 ...

  8. Python学习之并发基础知识

    8 并发编程 8.1 基础知识 8.1.1 操作系统的定义 操作系统是存在于硬件与软件之间,管理.协调.调度软件与硬件的交互. 资源管理解决物理资源数量不足和合理分配资源这两个问题, 通俗来说,操作系 ...

  9. 并发系列1:并发基础知识

    本文是Java并发系列的开篇,主要讲一些并发的计算机基础知识.本系列所讲的知识框架也是基于<Java并发编程的艺术>一书,所讲的内容也多围绕于并发concurrent包下的类. 正文 并发 ...

最新文章

  1. pg_basebackup 配置 stream replication 异步/同步
  2. nginx配置文件说明
  3. latex不能识别eps图片
  4. !Web云笔记--HTML基础
  5. Linux下rz,sz
  6. Matlab cell矩阵处理
  7. 代码拾取图片某一点的颜色_RPG游戏开发日志7:道具拾取与存放
  8. Lukas-Kanade光流法
  9. 项目管理的几个概念(WBS、OBS、RBS、BOM、CWS、CA)总结与区分
  10. ios去掉字符串中的某个字符_Python中有用的字符串方法
  11. johnson 算法 贪心
  12. xposed框架修改手机串号教程_xposed 入门之修改手机 IMEI
  13. 将Kali Linux中的Firefox浏览器语言设置为中文
  14. android图标分组名称唯美简单可复制,分组名称唯美简单四字
  15. 龙骨(Dragonbones)在Unity中换装的实现
  16. gc java_java内存管理以及GC
  17. 应用软件安全编程资源使用安全
  18. Tree-shaking
  19. GIF表情包怎么制作 QQ动态图如何玩
  20. C语言练习——提高篇

热门文章

  1. python列表常用方法
  2. [导入]Update实现多表更新
  3. Excel 自动根据Sheet名生成目录
  4. 使用nginx做反向代理和负载均衡效果图
  5. windows7环境下使用pip安装MySQLdb
  6. 《JavaScript DOM 编程艺术》 读书笔记
  7. Arduino 与 MPU6050 姿态解算+ PROCESSING
  8. laravel实现数据库读写分离配置或者多读写分离配置
  9. 自定义UISegmentedControl
  10. CF1131E String Multiplication(???)