- tomcat的内存溢出是由什么导致?
解:1.OutOfMemoryError: Java heap space
2.OutOfMemoryError: PermGen space
3.OutOfMemoryError: unable to create new native thread.
Tomcat内存溢出解决方案
对于前两种情况,在应用本身没有内存泄露的情况下可以用设置tomcat jvm参数来解决。(-Xms -Xmx -XX:PermSize -XX:MaxPermSize)
最后一种可能需要调整操作系统和tomcat jvm参数同时调整才能达到目的。
第一种:是堆溢出。
但堆的大小受下面三方面影响:
1.相关操作系统的数据模型(32-bt还是64-bit)限制;(32位系统下,一般限制在1.5G~2G;我在2003 server 系统下(物理内存:4G和6G,jdk:1.6)测试 1612M,64位操作系统对内存无限制。)
2.系统的可用虚拟内存限制;
3.系统的可用物理内存限制。
其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可
解决办法:服务器为64位、2G内存: JAVA_OPTS='-server -Xms1024m -Xmx1536m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m'
第二种:永久保存区域溢出
-XX:PermSize 永久保存区域初始大小
-XX:PermSize 永久保存区域初始最大值
这一般结合第一条使用,比如 set JAVA_OPTS= -Xms1024m -Xmx1024m -XX:PermSize=128M -XX:PermSize=256M
第三种:无法创建新的线程。
这种现象比较少见,也比较奇怪,主要是和jvm与系统内存的比例有关。
(MaxProcessMemory - JVMMemory - ReservedOsMemory) / (ThreadStackSize) = Number of threads
减少jvm 的内存了
- 设置swap分区
- 用free -m 查看交换分区
- dd of=/dev/zero if=/var/swap bs=1024 count=2048000
- mkswap -f /var/swap(创建交换分区)
- swapon /var/swap(激活)
- 避免重启丢失数据 把交换分区加入/etc/fstab 在最后添加一句: /var/swap swap swap defaults 0 0
- Free –m 查看
- 查找/data被修改的3天以前的文件,并复制到/tmp/3d 目录下
Find /data –mtime -3 –type f –exec cp –f /tmp/3d {} \;
Find /data –mtime -3 –type f | xargs cp –f /tmp/3d
- 要求访问nginx分析日志,找出访问数量前十位的ip
Awk ‘{print$1}’ access.log | sort |uniq –c | sort –nr | head
- 分析以下的配置文件是干啥?
/var/log/messages 内核消息及各种应用程序的公共日志。包括启动、I/O、网络安全、程序故障。
/var/log/secure 用户认证相关的安全时间信息
/var/spool/clientmqueue 系统中用户开启了cron,而cron中执行的程序有输出内容,输出内容会以邮件的形式或发给cron的用户。而sendmail没有启动就会产生这些文件。
解决办法:cd 到那个目录,ls |xargs rm –f
/proc/interrupts 列出当前所有系统注册的中断号,中断发生次数,中断设备名称。
/etc/fastb 开机自动挂载的文件
/etc/profile 修改环境变量,在这里修改的内容是对所有用户起作用的
- nginx 常用模块及功能
Nginx模块 |
功能 |
http_stub_status_module |
用来显示当前服务器连接请求状态信息 |
http_random_index_module |
客户端发来请求时,在页面目录中随机选择一个主页面返回给用户 |
http_sub_module |
实现对客户端请求资源内容的替换功能 |
http_access_module |
可以通过匹配客户端源ip地址进行限制 |
http_auth-basic_module |
状态页,使用basic机制进行用户认证 |
http_gzip_module |
文件的压缩功能 |
http_referer_module |
防盗链功能,基于访问功能 |
http_rewirte_module |
重定向模块,解析和处理rewrite |
http_gzip_static_module |
静态压缩模块 |
- tomcat的默认开启端口及作用
(1)8005 ——————这个端口负责监听关闭tomcat的请求
(2)8009——————与其他http服务器通信接口,用于http服务器集合
(3)8080——————建立http连接用
8. 用tcpdump 嗅探80端口的访问看看谁最高
Tcpdump –i eth0 –tnn dst port 80 –c 1000 | awk –F “.”‘{print $1”.”$2”.”$3”.”$4}’|sort |uniq –c | sort –nr |head -20
9.查看http并发请求数及tcp连接状态
Netstat –n | awk ‘/^tcp/ {++s[$NF]} END{for (a in S) print a,S[a]}’
10.每天晚上0点,在/var/www/html 目录下打包,并备份到/data/目录下(时间是不一样的)
0 0 * * * tar czvf /data/html.$(data +%F) /var/www/html/
10.nginx防盗链怎么做?
配置说明:
valid_referers 设置信任网站
none 浏览器中referer为空的情况,就直接在浏览器访问图片
blocked referrer不为空的情况,但是值被代理或防火墙删除了,这些值不以http:// 或https://开头
location ~* \.(jpg|gif|png|swf)$ {
valid_referers none blocked *.amber.com amber.com;
if ($invalid_referer) {
rewrite ^/http://www.amber.com/error.jpg;
#return 403;
}
}
如果连接的来源不是*.amber.com、amber.com的域(不区分大小写),则强制跳转到http://www.amber.com/error.jpg,若不设置错误页面,可以返回403报错。
来源:CSDN
作者:liunx菜鸟
链接:https://blog.csdn.net/caoshen_1/article/details/103587549