• 个人亲历运维面试


    WEB服务器

    Nginx

    1. Nginx的优点

    • 轻量级,同样是web服务器,比apache占用更好的资源
    • 抗并发,nginx处理请求是异步非阻塞,而apache是阻塞型的,在高并发下nginx能保持低资源低消耗高性能
    • 高度模块化设计
    • 社区活跃
    • 适合处理静态请求

    2. Nginx怎么优化

    • 优化进程个数:worker_processes  1一般调整到与CPU的颗数相同
    # 查看LinuxCPU的个数及总核数
    grep processor /proc/cpuinfo|wc -l
    
    # 查看CPU的个数
    grep 'physical id' /proc/cpuinfo|sort|uniq|wc -l
    
    # 通过执行top命令,然后按数字1,即可显示所有的CPU核数
    top  按1键就会显示第一个的信息
    
    Cpu0  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0
    • 绑定不同的nginx进程跑到不同的CPU上:默认情况下,nginx进程跑在某一个CPU上或某一核上,本次优化是不同的nginx进程给不同的CPU处理
    # 四核cpu配置
    worker_processes    4;
    worker_cpu_affinity 0001 0010 0100 1000;
    
    # 双核配置
    worker_processes    2;
    worker_cpu_affinity 0101 1010;
    • 调整nginx单个进程允许最大连接数
    events {
        worker_connections  1024;    #一个worker进程的并发
    }
    • 配置nginx worker进程最大打开文件数
    worker_rlimit_nofile 65535;
    • gzip压缩实现性能优化,gzip压缩模块提供了压缩文件内容的功能,用户请求的内容在发送给客户端之前,nginx服务器会根据一些具体的策略实施压缩,以节省网站出口带宽,同时加快了数据传输效率,提升了用户的访问体验。
    gzip on;                            #表示开启压缩功能
    
    gzip_min_length  1k;                  #表示允许压缩的页面最小字节数,页面字节数从header头的Content-Length中获取。默认值是0,表示不管页面多大都进行压缩,建议设置成大于1K。如果小于1K可能会越压越大
    
    gzip_buffers     4 32k;                 #压缩缓存区大小
    
    gzip_http_version 1.1;                #压缩版本
    
    gzip_comp_level 9;                  #压缩比率
    
    gzip_types  text/css text/xml application/javascript;  #指定压缩的类型
    
    gzip_vary on;                   #vary header支持
    
    完美配置:

    3. Nginx的常用模块有哪些

    ngx_http_gzip_module   文件的压缩功能
    ngx_http_fastcgi_module 将客户端对php的请求以fastcgi协议转发至指定服务器
    ngx_http_rewrite_module 重定向模块,解析和处理rewrite请求
    server {
            server_name www.a.com;
            root /data/web3/;
            location /bbs {
                    rewrite ^/bbs(.*)$  /forum$1 last; #正则表达式后向引用
            }
    }
    效果:
        http://www.a.com/bbs
            --> http://www.a.com/forum/
    永久重定向:http跳转到https
    server{
        listen 80;
        listen 443 ssl;
        server_name www.c.com;
        root /data/web3/;
        ssl on;
        ssl_certificate /etc/nginx/conf.d/b.crt;
        ssl_certificate_key /etc/nginx/conf.d/bb.key;
        ssl_session_cache shared:sslcache:20m;
        ssl_session_timeout 10m;
        location / {
            if ($scheme = http ){
                rewrite /  https://www.c.com/ permanent;
            }
        }
    }
    ngx_http_upstream_module 负载均衡模块,提供服务器分组转发、权重分配、状态监测、调度算法等高级功能
    upstream mysqlsrvs{
            ip_hash; #源地址hash调度方法 写了backup就不可用
            server 172.18.99.1:80 weight=2; #weight权重
            server 172.18.99.2:80;          #标记down,配合ip_hash使用,实现灰度发布
            server 172.18.99.3:80 backup;   #backup将服务器标记为“备用”,即所有服务器均不可用时才启用 
        }
    }
    server{
        server_name www.a.com;
        proxy_cache proxycache;
        proxy_cache_key $request_uri;
        proxy_cache_valid 200 302 301 1h;
        proxy_cache_valid any 1m;
        location / {
            proxy_pass http://mysqlsrvs;
        }
    }

    Tomcat

    1. tomcat优化

    • 线程池优化
    maxThreads="1500"   
    • 压缩优化
    compression="on" 打开压缩功能 
    export JAVA_OPTS="-server -d64 -Xms2g -Xmx20g -XX:PermSize=1g -XX:MaxPermSize=4g -XX:-UseGCOverheadLimit -Djava.util.Arrays.useLegacyMergeSort=true"
    • 设置session的过期时间
    <session-config>
            <session-timeout>30</session-timeout>
        </session-config>

     Apache

    1. apache的优点

    • rewrite,比nginx的rewrite强大
    • 模块丰富
    • 少bug,nginx的bug相对较多
    • 超稳定
    • 适合处理动态请求

    php+apache 和 php+nginx的区别

    apache是通过mod_php来解析php  nginx是通过php-fpm(fast-cgi)来解析php


    1. PHP 解释器是否嵌入 Web 服务器进程内部执行mod_php 通过嵌入 PHP 解释器到 Apache 进程中,只能与 Apache 配合使用,而 cgi 和 fast-cgi 以独立的进程的形式出现,只要对应的Web服务器实现 cgi 或者 fast-cgi 协议,就能够处理 PHP 请求。mod_php 这种嵌入的方式最大的弊端就是内存占用大,不论是否用到 PHP 解释器都会将其加载到内存中,典型的就是处理CSS、JS之类的静态文件是完全没有必要加载解释器。
    2. 单个进程处理的请求数量mod_php 和 fast-cgi 的模式在每个进程的生命周期内能够处理多个请求(fast-cgi可以根据需要来调整进程的多少),而 cgi 的模式处理一个请求就马上销毁进程,在高并发的场景下 cgi 的性能非常糟糕。 每一个Web请求PHP都必须重新解析php.ini、重新载入全部dll扩展并重初始化全部数据结构。使用FastCGI,所有这些都只在进程启动时发生一次
    综上,如果对性能有极高的要求,可以将静态请求和动态请求分开,这时 Nginx + php-fpm 是比较好的选择。
    PS: cgi、fastcgi 通常指 Web 服务器与解释器通信的协议规范,而 php-fpm 是 fastcgi 协议的一个实现。

    nginx可用来干什么?

    1、静态HTTP服务器
    2、反向代理服务器
    3、负载均衡
    4、虚拟主机
    5、邮件代理服务器

    加油,你们是最棒的!
  • 相关阅读:
    nyoj118 修路工程 次小生成树
    nyoj99 单词连接 欧拉回路
    NYOJ289 苹果 典型背包
    nyoj 139 牌数 康拓展开
    poj1423 NYOJ_69 数字长度 斯特林公式 对数应用
    NYOJ311 完全背包 对照苹果
    sort 函数的应用
    NYOJ120 校园网络 强连接
    nyoj219 计算日期 吉姆拉森公式
    把SmartQ5系统装在SD卡上
  • 原文地址:https://www.cnblogs.com/Wshile/p/12506886.html
Copyright © 2020-2023  润新知