1> 脚本
1.awk扩展应用:分析Web日志的访问量排名,要求获得客户机的地址、访问次数,并且按照访问次数排名
分析:awk统计Web访问排名
在分析Web日志文件时,每条访问记录的第一列就是客户机的IP地址,其中会有很多重复的IP地址。因此只用awk提取出这一列是不够的,还需要统计重复记录的数量并且进行排序。
通过awk提取信息时,利用IP地址作为数组下标,每遇到一个重复值就将此数组元素递增1,最终就获得了这个IP地址出现的次数。
针对文本排序输出可以采用sort命令,相关的常见选项为-r、-n、-k。其中-n表示按数字顺序升序排列,而-r表示反序,-k可以指定按第几个字段来排序。
# awk '{ip[$1]++} END{for(i in ip) {print ip[i],i }}' /var/log/httpd/access_log --->提取
# awk '{ip[$1]++} END{for(i in ip) {print i,ip[i]}}' /var/log/httpd/access_log | sort -n/r --->排名
**********************
2.nginx日志切割
]# vim /usr/local/nginx/logbak.sh
#!/bin/bash
date=`date +%Y%m%d`
logpath=/usr/local/nginx/logs
mv $logpath/access.log $logpath/access-$date.log
mv $logpath/error.log $logpath/error-$date.log
kill -USR1 $(cat $logpath/nginx.pid)
]# crontab -e
03 03 * * 5 /usr/local/nginx/logbak.sh
也可以是php日志:
]# ls /var/log/php-fpm/
error.log www-error.log
也可以是Tomcat日志
***********************
3.memcache数据库连接脚本
]# vim /usr/local/nginx/html/test.php
<?php
$memcache=new Memcache; //创建memcache对象
$memcache->connect('192.168.2.5',11211) or die ('could not connect!!');
$memcache->set('key','test'); //定义变量
$get_values=$memcache->get('key'); //获取变量值
echo $get_values;
?>
4.认LVS健康检查脚本
]# vim check.sh
#!/bin/bash
VIP=192.168.4.15:80
RIP1=192.168.4.100
RIP2=192.168.4.200
while :
do
for IP in $RIP1 $RIP2
do
curl -s http://$IP &>/dev/vnull
if [ $? -eq 0 ];then
ipvsadm -Ln |grep -q $IP(能查到,即为真) || ipvsadm -a -t $VIP -r $IP(前面为真,后面不执行)
else
ipvsadm -Ln |grep -q $IP(能查到,即为真) && ipvsadm -d -t $VIP -r $IP(为真才删)
fi
done
sleep 1
done
***********************
2> nginx 优化
1.常见http状态码:
200 一切正常
301 永久重定向
302 临时重定向
401 用户名或密码错误
403 禁止访问(客户端IP地址被拒绝)
404 文件不存在
414 请求头过长
500 服务器内部错误
502 Bad Gateway
2.优化Nginx并发量
worker_processes 2; //进程,与CPU核心数量一致
events {
worker_connections 65535; //每个worker最大并发连接数(线程)
use epoll;
}
3.用户或组 硬限制或软限制
vim /etc/security/limits.conf
#用户或组 硬限制或软限制 需要限制的项目 限制的值
* soft nofile 100000
* hard nofile 100000
4.优化Nginx数据包头缓存
http {
client_header_buffer_size 1k; //默认请求包头信息的缓存
large_client_header_buffers 4 6m; //最大请求包头部信息的缓存个数与容量,生产环境4k足以
5.浏览器本地缓存静态数据
ocation ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {
expires 30d; //定义客户端静态缓存时间为30天,一定要有;号
6.日志切割
7.对页面进行压缩处理
http {...
gzip on; //开启压缩
gzip_min_length 1000; //小文件不压缩
gzip_comp_level 4; //压缩比率
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; //对特定文件压缩,类型参考mime.types
]# nginx -s reload
8.服务器内存缓存
http {
...
open_file_cache max=2000 inactive=20s;
open_file_cache_valid 60s;
open_file_cache_min_uses 5;
open_file_cache_errors off;
//设置服务器最大缓存2000个文件句柄,关闭20秒内无请求的文件句柄
//文件句柄的有效时间是60秒,60秒后过期
//只有访问次数超过5次会被缓存
9.配置PHP使用memcached服务器共享Session信息(部署在后端web).
]# vim /etc/php-fpm.d/www.conf //文件的最后2行
修改前效果如下:
php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/php/session
//原始文件,默认定义Sessoin会话信息本地计算机(默认在/var/lib/php/session)
修改后效果如下:
php_value[session.save_handler] = memcache
php_value[session.save_path] = "tcp://192.168.2.5:11211"
//定义Session信息存储在公共的memcached服务器上,主机参数中为memcache(没有d)
//通过path参数定义公共的memcached服务器在哪(服务器的IP和端口)
]# systemctl restart php-fpm
9.部署varnish缓存服务器(5.2.1)
]# vim /usr/local/etc/default.vcl
backend default {
.host = "192.168.2.100";
.port = "80";
}
启动服务
]# nginx -s stop(如果占用的话)
]# varnishd -f /usr/local/etc/default.vcl
//varnishd命令的其他选项说明如下:
//varnishd –s malloc,128M 定义varnish使用内存作为缓存,空间为128M
//varnishd –s file,/var/lib/varnish_storage.bin,1G 定义varnish使用文件作为缓存
]# varnishlog varnish日志
]# varnishncsa 访问日志
]# varnishadm 命令管理缓存页面
]# varnishstat 查看Varnish状态
***********************
3> Tomcat 优化
1.Tomcat的主要启动文件
]# ls /usr/local/tomcat
bin/ //主程序目录
lib/ //库文件目录
logs/ //日志目录
temp/ //临时目录
work/ //自动编译目录jsp代码转换servlet
conf/ //配置文件目录
webapps/ //页面目录
]# ln -s /usr/local/tomcat/bin/startup.sh /sbin/
]# ln -s /usr/local/tomcat/bin/shutdown.sh /sbin/
私钥、证书存储路径为:/usr/local/tomcat/conf/cert
2.Tomcat配置文件详解、
组件类别:
顶级组件 :位于整个配置的顶层,如server。
容器类组件 :可以包含其它组件的组件,如service、engine、host、context。
连接器组件 :连接用户请求至tomcat,如connector。
被嵌套类组件 :位于一个容器当中,不能包含其他组件,如Valve、logger。
8080: http 1.1 connector,也就是接收处理http请求的端口,如果你只用一个tomcat处理所有请求,可以只使用这个connector。
8005: tomcat接受关闭指令的端口,比如你要关闭tomcat,这个接口会收到shutdown的指令,然后关闭所有后台线程。
8009: ajp connector,它一般用来设置tomcat集群。因为tomcat作为servlet容器,对于处理静态资源的能力不是很好,所以一般大点的项目都会在tomcat前面加个apache服务器,用来处理静态资源和负载均衡,通过预先设定的规则把动态请求通过ajp端口交给tomcat处理,这时可以只使用ajp connector。
8443:网页加密端口
4> DB
1.memcache
PORT="11211"
USER="memcached"
MAXCONN="1024" //最大连接数
CACHESIZE="64" //缓存64k