zoukankan      html  css  js  c++  java
  • interview

    (1)web服务器连接很卡:
    网络问题,网络延时,网络丢包
    查看服务器的连接数,是不是同时连接人数太多,超过服务器的正常负载
    查看日志
    查看服务器的TCP连接情况,是不是被DDOS攻击
    查看服务器内存使用量,是否某个应用出现问题;CPU
    通过iostat查看,是不是服务器的IO吃紧
    数据库,数据库的负载,查询的效率
    top iostat netstat
    (@)TIME_WAIT数量过多问题的解决办法:
    查看:netstat -an
    # vim /etc/sysctl.conf
    net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
    net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接
    net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收
    net.ipv4.tcp_fin_timeout = 30 修改系統默认的 TIMEOUT 时间
    net.ipv4.tcp_keepalive_time = 30 保持连接的时间
    net.ipv4.tcp_max_tw_buckets = 100 这个是设置服务器同时保持的time_wait的数目
    ---------------------------------------------------------------------
    数据库调优
    使用索引
    (创建表的时候可以同时创建合适的索引,也可以使用ALTERTABLE或CREATEINDEX在以后创建索引)
    索引应建立在那些将用于JOIN,WHERE判断和ORDERBY排序的字段上。尽量不要对数据库中某个含有大量重复的值的字段建立索引
    优化的查询语句
    对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。
    应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描
    最好不要给数据库留NULL,尽可能的使用 NOT NULL填充数据库
    应尽量避免在 where 子句中使用 != 或 <> 操作符,否则将引擎放弃使用索引而进行全表扫描。
    应尽量避免在 where 子句中使用 or 来连接条件,如果一个字段有索引,一个字段没有索引,将导致引擎放弃使用索引而进行全表扫描
    in 和 not in 也要慎用;对于连续的数值,能用between就不要用in;
    避免在 where 子句中对字段进行表达式操作;避免在where子句中对字段进行函数操作
    尽可能的使用 varchar/nvarchar 代替 char/nchar
    选取最适用的字段属性
    prefork和worker模式的比较
    prefork模式
    使用多个子进程,每个子进程只有一个线程。每个进程在某个确定的时间只能维持一个连接。
    在大多数平台上,Prefork MPM在效率上要比Worker MPM要高,但是内存使用大得多。
    prefork的无线程设计在某些情况下将比worker更有优势:
    它可以使用那些没有处理好线程安全的第三方模块,并且对于那些线程调试困难的平台而言,它也更容易调试一些。
    使用多个子进程,每个子进程只有一个线程。每个进程在某个确定的时间只能维持一个连接,效率高,但内存占用量比较大。
    worker模式
    使用多个子进程,每个子进程有多个线程。每个线程在某个确定的时间只能维持一个连接。
    通常来说,在一个高流量的HTTP服务器上,Worker MPM是个比较好的选择,因为Worker MPM的内存使用比Prefork MPM要低得多。
    但worker MPM也由不完善的地方,如果一个线程崩溃,整个进程就会连同其所有线程一起"死掉"。
    由于线程共享内存空间,所以一个程序在运行时必须被系统识别为"每个线程都是安全的"。
    worker使用多个子进程,每个子进程有多个线程,每个线程在某个确定的时间只能维持一个连接,内存占用量比较小,适合高流量的http服务器。
    缺点是假如一个线程崩溃,整个进程就会连同其任何线程一起”死掉”,所以要保证一个程式在运行时必须被系统识别为”每个线程都是安全的”
    总的来说,prefork方式速度要稍高于worker,然而它需要的cpu和memory资源也稍多于woker。
    查看文件系统类型:
    df -T
    lsblk -f
    fsck -N /dev/sda1
    端口扫描:nmap
    常见的端口号:
    smtp 25
    pop3 110
    smtps 465
    pop3s 995
    ssh 22
    ftp 21,20
    smtp 25
    tftp 69
    sftp 115
    snmp 161
    redis 6379
    memcache 11211
    squid 3128
    mssql 1433/1434
    mongodb 27017
    ldap 389
    ldap 636 ---轻量目录访问协议
    rtsp 554 ---实时流传输协议,是TCP/IP协议体系中的一个应用层协议,传送多媒体数据
    imaps 993 ---邮件访问协议
    imap3 220
  • 相关阅读:
    python-字典
    C#公历转农历算法
    GridView控件显示图片
    SQLite DBHelp
    面向服务体系结构:适用于敏捷的系统
    针对 .NET 框架的安全编码指南
    Microsoft .NET Pet Shop 4
    C#.NET数据库访问类DBHelper
    Emgu CV 高斯建模
    .NET代码编写规范 整理
  • 原文地址:https://www.cnblogs.com/skyzy/p/9226789.html
Copyright © 2011-2022 走看看