程序运行时 线程 - 进程之间的关系
2017-05-13 09:48
190 查看
我们平常都说一个网站支持多线程,多线程 。那么多线程是什么?
首先我们要理解线程是在进程中运行的,也可以说一个线程必须要有一个装载它的进程。 而一个进程中至少有一个线程在运行。
好,那么我们再来分析多线程。
多线程就是一个进程中有多个线程在运行。那么有什么好处,为什么不做成多进程呢?解释:服务器开辟一个线程所消耗的资源远远小于开辟一个进程所消耗的资源。且维护进程的资源成本高于维护一个线程的资源成本。而程序中的代码就是由线程去运行的(php代码该线程得编译一次再运行,java直接运行字节码)
我们经常听到的apache、nginx、tomcat 都支持多线程开发。多线程模式可以支持更高的网站迸发。
在http协议和https协议中我们可以在request中看到Connection:keep-alive 意思是长连接,既是保持该连接在一定时间内不会断开(你可以在服务器软件nginx、apache等软件中调校keep-alive的有效时间,或者是等待客户端的主动关闭请求,详情查看http协议)。在不会断开的时间内其实就是服务器那边一直在维护你的线程,没有断开这个线程。当你在一定时间内没有再次请求发送到该服务器,那么服务器就会注销掉这个线程释放服务器资源。
如果有时网站崩溃了,你可以检查一下监控time_wait的值是否过高,如果高了说明在这个时段服务器维护的线程(keep-alive的长连接)是比较多的。
首先我们要理解线程是在进程中运行的,也可以说一个线程必须要有一个装载它的进程。 而一个进程中至少有一个线程在运行。
好,那么我们再来分析多线程。
多线程就是一个进程中有多个线程在运行。那么有什么好处,为什么不做成多进程呢?解释:服务器开辟一个线程所消耗的资源远远小于开辟一个进程所消耗的资源。且维护进程的资源成本高于维护一个线程的资源成本。而程序中的代码就是由线程去运行的(php代码该线程得编译一次再运行,java直接运行字节码)
我们经常听到的apache、nginx、tomcat 都支持多线程开发。多线程模式可以支持更高的网站迸发。
在http协议和https协议中我们可以在request中看到Connection:keep-alive 意思是长连接,既是保持该连接在一定时间内不会断开(你可以在服务器软件nginx、apache等软件中调校keep-alive的有效时间,或者是等待客户端的主动关闭请求,详情查看http协议)。在不会断开的时间内其实就是服务器那边一直在维护你的线程,没有断开这个线程。当你在一定时间内没有再次请求发送到该服务器,那么服务器就会注销掉这个线程释放服务器资源。
如果有时网站崩溃了,你可以检查一下监控time_wait的值是否过高,如果高了说明在这个时段服务器维护的线程(keep-alive的长连接)是比较多的。
相关文章推荐
- 程序 进程 线程之间关系
- 线程和进程、程序、应用程序之间的关系
- 进程、线程和程序之间的关系
- 进程线程任务程序之间的关系
- 线程,进程,程序,服务,之间的关系和区别
- 线程和进程、程序、应用程序之间的关系
- 进程、线程与任务程序之间的关系
- 什么是程序,进程和线程?三者之间有何关系?
- 进程、应用程序域、上下文及线程之间的关系
- 关于线程与进程之间的关系,今天学习了一下,在这做一下笔记。
- 进程、线程、应用程序域、上下文之间的关系
- 多线程切换以及线程进程之间关系
- 进程与线程,进程与程序之间的区别
- C# 开发技巧]如何防止程序多次运行 线程 进程
- Linux进程线程学习笔记:运行新程序
- 【android,21】Process进程 与线程之间的关系
- 【进程线程与同步】5.2 避免在同一机器上运行同一程序的多个实例
- 26、进程和线程之间的关系
- Java第七课 Java的多线程程序进程和线程的概念,实现多线程的两种方式,线程同步的原理,线程的死锁,运用wait和notify来实现producer - consumer关系,线程终止的两种情况。
- 进程、线程与JVM之间的关系