Apache、tomcat、Nginx
Apache:是一个web服务器,解析php服务、有php组件作为php容器、请求容器需要有连接数,最大连接数|最小连接数,有多少人可以连接超过了就得排队。
Apache重点
1、安装yum -y install httpd
2、修改配置文件—/etc/httpd/conf/httpd.conf
3、监控—配置status状态在网页上查看各个状态。
4、调优—工作模式、最大、最小连接数、生命周期。
修改配置文件路径:/etc/httpd/conf/httpd.conf。修改工作模式—修改里面的最大最小进程、端口号。
开源配置文件一般是模板提供一些基础的、还有一些路径。
工作模式:worker、Prefork,优化就是改成worker工作模式1:n
两种切换工作模式—yum安装
cd /usr/sbin
ls httpd.*
./httpd Tab
./httpd -V 查看工作模式
工作模式介绍
prefork:进程数
Worker模式优缺点
优点:占据更少的内存,高并发下表现更优秀。
缺点:必须考虑线程安全的问题,因为多个子线程是共享父进程的内存地址的。如果使用keep-alive的长连接方式,也许中间几乎没有请求,这时就会发生阻塞,线程被挂起,需要一直等待到超时才会被释放。如果过多的线程,被这样占据,也会导致在高并发场景下的无服务线程可用。
优化方法:工作模式改成worker模式—提高支持我们的线程数。把每个进程支持的线程提高,前提确定cpu能够处理。
Prefork:多进程模式、一个进程对应一个线程,进程超过最大空闲值时,如果服务器进程满了再来请求如何处理(排队等待)等待超时或者处理完了、排队的就可以使用。
长链接:例如视频和聊天
注意:进程不能全部打满、这样影响cpu运行、占用内存
Max:最大空闲数超过了就杀死进程
Min:最小空闲数小于了就重启进程
ServerLimit256 支持最大的并发256超过了就排队
MaxClient256 支持最大的并发256超过了就排队
MaxRequestsPerChild:4000 防止内存溢出
Worker:多进程多线程—一个进程能启动多个线程1:n缺点:线程公用进程内存,如果一个线程蹦了会导致进程下的所有线程崩。
cd /opt/lampp/etc/extra
Vim httpd-mpm.conf
1、启动多少个进程
2、最小多少空闲个线程
3、最大多少空闲个线程
4、ThreadsPerChild:一个线程启动多少个线程数
5、MaxRequestWorkers:每个进程接收多少个请求
6、MaxConnectionPerChild:长链接、生命周期
换算:MinspareThreads < StartServers*ThreadsPerChild > MaxRequestWorkers
如果小于最小线程数就启动进程、如果大于最小线程数就杀死进程
优化目的:
同一时间处理请求数多了排队的就少了—客户端发送请求立马请求不用排队、还要看看有没有长链接情况
监控
启动失败
Apache判断进程是否存在根据pid进行判断—pid进程号杀死进程号、再看端口号是否冲突
Tomcat
1、安装—解压安装包
2、配置—修改端口号(shutdown 端口号8005、http请求8080、ajp8009)
3、监控—tomcat_user.xml 修改用户名和密码然后点击查看状态。访问ip:8080 页面server status按钮、页面可以看到线程数。。。。jvm后期用图形化工具来看
4、调优—修改配置文件/opt/apache-tomcat-8.5.41/conf/server.xml
java项目
1、war包放到 webapps里
2、配置文件*.properties 查找find ./|grep properties
Nginx
1、安装
1、安装依赖环境
yum -y install gcc automake autoconf libtool make
yum -y install gcc gcc-c++ pcre-devel openssl openssl-devel
2、安装pcre、zlib,前者为了重写rewrite,后者为了gzip压缩。
解压后切换到对应的目录
[root@localhost ~]# tar -zxvf pcre-8.41.tar.gz
[root@localhost pcre-8.41]# ./configure --prefix=/usr/local/pcre
[root@localhost pcre-8.41]# ./configure --prefix=/usr/local/zlib
[root@localhost pcre-8.41]# make && make install
3、安装openssl—这个不需要编译安装
下载文件里有此安装包—只需要解压即可
[root@localhost ~]# tar -zxvf openssl-1.0.1t.tar.gz
4、Nginx安装
下载地址:http://nginx.org/en/download.html
[root@localhost ~]# tar -xvf nginx-1.13.8.tar
[root@localhostnginx-1.13.8]#./configure --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_stub_status_module
[root@localhost nginx-1.13.8]#make && make install
5、启动
/usr/local/nginx
./nginx
查看配置文件
vi nginx.conf
修改哪个位置要看好
状态配置
yum安装 --但是yum源容易变化
yum -y install wget
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
yum makecache
yum -y install nginx
启动nginx:service nginx start
修改端口号—配置文件位置:vi /etc/nginx/conf.d/default.conf