linux 系统

来源:互联网 发布:sql团体培训 编辑:程序博客网 时间:2024/06/13 21:48
linux 最小化 :系统 服务 命令  权限
web请求 :用户输入网址 dns解析ip  浏览器解析端口号 建立tcp连接  向服务端发起http请求 服务器返回响应信息 关闭http 和 tcp连接

nginx 配置+负载均衡
--config
性能  连接超时和fastcgi   gzip expire  robot static cdn  并发连接和请求速率
安全 软件名和版本号 目录权限  http请求  
用户体验  错误页面
--balance
location user_agent   ext_name 


mysql 多实例+主从 
主库锁表flush table with read lock   备库只读  主库导出mysqldump -x —master-data=1 解锁主表 unlock tables
show master status  | change master  |start slave  |show slave status   (slaveIO masterIO  SQL线程检测RelayLog)
stop slave  跳过  set global sql_slave_skip_counter=1 or slave-skip-errors  start slave

store:nfs(写权限)+mc(命中率)




分层:
外围应用程序
命令解释器  shell
系统核心     kernel lib  api
硬件

特点:
支持多用户 多任务 多进程 多cpu的系统
有完善的网络服务  http ftp  smtp  pop samba snmp  dns dhcp  ssh  telnet
有完善的大型数据库平台  oracle db./2 sybase mysql postgresql
完善的开发平台 java php perl c/c++

虚拟机:
1bridge(虚拟ip) nat(独立ip) host-only(不能连接外网)
2.磁盘分区:
主分区 扩展分区 逻辑分区
一块磁盘最多4个主分区 其中一个主分区的位置可以用扩展分区替换,这个扩展分区内可划分多个逻辑分区,扩展分区必须划分逻辑分区才能用
分区要求:根分区 100G+  swap 10G+ boot 百兆

远程连接:
ssh 加密   telnet 未加密
没连接上:ping ip telnet ip+port iptalbes检查
securecrt 日志 下载上传 批量部署
linux 命令: 命令 参数 文件/路径
启动服务:sshd  syslog network crond  systats(iostat mpstat  sar)

最小化原则:
系统最小化
启动服务最小化 
命令最小化
用户权限最小化
目录权限最小化

权限:
sudo 事先授权
sudo su - root 最大化授权
su -root 另一个root账户

其他优化:
调整文件描述符数量 自动清理垃圾文件  内核参数优化 /etc/sysctl.conf 锁定关键系统文件  清空内核版本显示 清除多余的系统虚拟账号 为grub引导菜单加密码



----------------------------------------------------------------------------------------------------------------
web服务:
用户输入网 如果ldns没有那么 dns解析  找到对应的dns服务器  ip解析记录发给ldns  ldns发给客户端浏览器 客户端访问资源

http协议原理:
客户输入网址 dns解析
浏览器解析出端口号  并通过url和端口号简历tcp连接 而后浏览器向服务器发送http请求
服务器读取并返回响应信息 服务器关闭http连接和tcp连接 

重点:dns流程
用户访问网站
dns解析
建立tcp连接发送http报文
http请求报文
http响应报文
web服务区后端集群处理 nginx fastcgi php mysql

伪静态:便于收录 消耗资源
流量:独立IP PV访问页面数 UV独立访客(http报文或是cookie)
并发:单位时间能处理的最大连接数 (RPS SBC QPS IOPS)
大型网站  每天—>独立IP 数十万 pv上千万  并发级别 过万 机器数量几百台

FASTCGI:
--fastcgi 将http服务器和动态脚本语言通信接口分开
--fastcgi是一个可伸缩 高效地 在http服务器和动态脚本之间通信的接口,采用C/S结构,分为HTTP
服务器和服务端动态解析服务器
--nginx(fastcgi_pas客户端)发送请求—>php-fpm启动多个fastcgi守护进程 —>发送给php解析器(php.ini配置)—>发送给mysql请求数据

php服务缓存
--服务端接受请求
--通过libphp或是php-fpm处理找到php文件加载进内存解析,
--将php源代码编译成opcode,
--并执行,执行后丢弃
php缓存解决丢弃问题,即不丢弃opcode,避免二次编译,直接读取缓存过的opcode即可
常用:pac accelerate xcache
----------------------------------------------------------------------------------------------------------------



存储服务:
nfs:可写权限
rpc记录每个nfs端口号
有点:快速部署 服务稳定
局限:单点故障 并发低 设计了同步(实时等待)和异步(解耦)的概念

memcache
场景:热点数据缓存(数据预热) + session会话共享(速度快 解决共用session,一致性hash使session仍有丢失,cookie解决即可)
特点:协议简单 异步模型使用libevent作为事件处理机制 kv存储  全内存缓存 分布式
工作原理:cs sockeyt事件处理 数据存储是预分配内存(slab lru-get删除 惰性  hash检索)
常用参数和状态查询 memcache memcached

命中率:后端节点服务器越多,命中率就越低 | 一致性哈希算法 使每台服务器缓存不同数据,并且影响最小,总数量=全部数据量
----------------------------------------------------------------------------------------------------------------

mysql

多实例:1-2个实例居多,48G内存,磁盘 12*300 RAID10   cpu E5210
配置: my.cnf mysql 都是独立文件,在独立的文件夹下
/data
     3306
          my.cnf
          mysql
     3307
          my.cnf
          mysql

主从复制:
方式:单向 双向  级联(log-slave-update 从binlog也要开) 环状
作用:备库 读写分离 业务拆分

原理:异步逻辑  三个线程 主开启binlog  server-id不同 binlog记录修改sql

流程:
主库锁表flush table with read lock   备库只读  主库导出mysqldump -x —master-data=1
解锁主表 unlock tables

备库读取和延迟处理 (流程):show master status  | change master  |start slave  |show slave status   (slaveIO masterIO  SQL线程检测RelayLog)

主备一致性检测  主备切换 pt--

主从复制问题:
stop slave
跳过  set global sql_slave_skip_counter=1 or slave-skip-errors
start slave
主从复制问题原因:
从库太多 从库比主库性能低 慢sql 并发大 网络延迟 

授权:读写权限分开 从库 read-only 双保险
----------------------------------------------------------------------------------------------------------------

nginx

概述:
性能  连接超时和fastcgi   gzip expire  robot static cdn  并发连接和请求速率
安全 软件名和版本号 目录权限  http请求  
用户体验  错误页面


详细:
隐藏nginx版本号: server_tokens off
更改源码隐藏nginx软件名
更改nginx默认用户 

优化性能:
nginx 进程对应配置  worker_process cpu核数*2
不同nginx绑定不同cpu  woker_cpu_affinity 0001 0010 0100 1000
事件处理模型 use epoll
单个进程允许的客户端最大连接数  woker_connections     max_client = worker_process*worker_connections
nginx 最大打开文件数: worker_rlimit_nofile 65535
优化散列表: server_name *.nginx.org | server_names_hash_max_size  server_names_hash_bucket_size

高效文件传输: send file on  tcp_nopush on

连接超时 keepalive_timeout 60  tcp_nodelay on  client_header_timeout 15 client_body_timeout 215
send_timeout 15 

上传文件大小限制:client_max_body_size 8m

fastcgi优化参数  buffer 写入  cache读取

gzip :纯文本最好压缩  
gzip on 
gzip_min_length 1k;
gizip_buffers 4 16k
gzip_http_version 1.1
gzip_comp_level 2
gzip_type  text/plain
gzip_vary on

expire:
控制http 的 expires  cache-control 是否缓存和缓存多久
根据扩展 文件名 单个文件添加expire
location {
     expires 7d;
     break;
}


日志切割:
crontab+mv
access_log off
deny rewrite  allow if条件

防盗链:refer cookie   加密(路径和时间戳)
防爬虫: $http_user_agent
方法:$request_method
CDN加速: dns解析到服务商 (蓝汛 快网 网宿)
页面跳转:error_page 403 404 ...

服务优化:页面 附件下载 图片上传 独立出来

服务降权,在每个用户文件夹内设计用户,不必root重启
控制并发:limit_conn_zone  limit_zone
请求速率: limit_req_zone key zone=name:size rate=rate


负载均衡转发
方法:location user_agent   ext_name ...

说明:
lvs请求是转发数据包,tcp层
nginx反向代理是转发请求 http层

配置
upstream static_pools{
     server 10.0.0.9:80 wieght=1;
     server 10.0.0.10:80 weight=1;
}

upstream upload_pools{
     server 10.0.1.9:80 wieght=1;
     server 10.0.1.10:80 weight=1;
}



upstream default_pools{
     server 10.0.2.9:80 wieght=1;
     server 10.0.2.10:80 weight=1;
}

server{
     listen 80;
     server_name www.etiantian.org;
     location /staic/ {
         proxy_pass http://staic_pools;
         include proxy.conf;
     }
location /upload/ {
         proxy_pass http://upload_pools;
            include proxy.conf;
     }

location/{
         proxy_pass http://default_pools;
         include proxy.conf;
  
     }
}

proxy.conf:
          
        proxy_set_header Host $host;  //代理向后端转发http请求头部加入host字段信息 识别代理的哪个虚拟主机
          proxy_set_header X-Forwarded-For $remote_addr;  //记录用户真实IP,而不是代理服务器IP
      
          proxy_connect_timeout 60;
          proxy_send_timeout 60;
          proxy_read_timeout 60;
          proxy_buffer_size 4k;
          proxy_buffer 4 32k;
          proxy_busy_buffers_size 64k;
          proxy_temp_file_write_size 64k; 


核心参数
1.ngx_http_proxy_module    代理
proxy_set_header
client_body_buffer_size
proxy_connect_timeout
pxoy_send_timeout
proxy_read_timeout
proxy_buffer_size
proxy_buffers
proxy_busy_buffers_size
proxy_temp_file_write_size


2.ngx_http_upstream_module 负载均衡 
参数:server weight max_files backup fail_timeout down
算法:静态 权重 哈希 | 动态 连接时间 一致性哈希


健康状态
nginx_upstream_check_module(健康监测)  
proxy_next_upstream(状态监测) 
 


0 0
原创粉丝点击