程序运行时 线程

来源:互联网 发布:数据分析师加班厉害吗 编辑:程序博客网 时间:2024/06/05 13:34

我们平常都说一个网站支持多线程,多线程 。那么多线程是什么?

首先我们要理解线程是在进程中运行的,也可以说一个线程必须要有一个装载它的进程。 而一个进程中至少有一个线程在运行。

好,那么我们再来分析多线程。
多线程就是一个进程中有多个线程在运行。那么有什么好处,为什么不做成多进程呢?解释:服务器开辟一个线程所消耗的资源远远小于开辟一个进程所消耗的资源。且维护进程的资源成本高于维护一个线程的资源成本。而程序中的代码就是由线程去运行的(php代码该线程得编译一次再运行,java直接运行字节码)

我们经常听到的apache、nginx、tomcat 都支持多线程开发。多线程模式可以支持更高的网站迸发。

在http协议和https协议中我们可以在request中看到Connection:keep-alive 意思是长连接,既是保持该连接在一定时间内不会断开(你可以在服务器软件nginx、apache等软件中调校keep-alive的有效时间,或者是等待客户端的主动关闭请求,详情查看http协议)。在不会断开的时间内其实就是服务器那边一直在维护你的线程,没有断开这个线程。当你在一定时间内没有再次请求发送到该服务器,那么服务器就会注销掉这个线程释放服务器资源。

如果有时网站崩溃了,你可以检查一下监控time_wait的值是否过高,如果高了说明在这个时段服务器维护的线程(keep-alive的长连接)是比较多的。

0 0