运维
文章平均质量分 86
bruce128
https://github.com/bruce256?tab=repositories
展开
-
K8S容器OOM killed排查
docker耗用完内存前,堆内存并没有达到上限,于是没有触发老年代GC,内存没有降下去。如果容器OOM killed,容器里的jvm进程没有Full GC,那么肯定是MaxRAMPercentage参数太高,导致堆内存没有用到上限,无法触发堆内存(老年代)GC。当实例内存超过95%时,对比top显示的的jvm进程内存和ps stats输出的docker实例内存信息,其余进程耗用的内存忽略不计。遂将内存增加到4GB。4 由于堆内存没有的到达上限,但是整个jvm进程内存超出了容器的内存限制。原创 2023-08-30 09:20:09 · 2154 阅读 · 0 评论 -
应用部署技术发展简史
互联网企业生产环境的应用部署,大致分三个阶段。单物理机部署多个应用,虚拟机部署,容器化部署。一、物理机部署时代这是所有早期物联网公司必然经历的一个阶段。一台服务器,至少32核CPU、64G内存,如果只部署一个应用,那就太浪费了。于是,多个应用进程,DB,缓存进程等等都部署在同一个机器上。这种部署方式有一个最大的痛点:进程间资源抢占。如果一个进程耗用了100%的CPU资源,其他的进程无法...原创 2018-07-13 01:19:09 · 2925 阅读 · 3 评论 -
nginx修改上传文件大小限制
新装了一台服务器,用nginx做代理。突然发现上传超过1M大的客户端文件无法正常上传,于是修改了下nginx的配置。 cd /export/servers/nginx/conf/nginx.conf,在这个配置文件里面的server段里面的location / { root html; index index.html index...原创 2013-07-31 11:44:22 · 175932 阅读 · 2 评论 -
net::ERR_CONNECTION_RESET 问题排查
第二次为项目组开发一个文件上传功能。本机和测试环境都是OK的。但是一到线上就报错,而且服务端tomcat看不到任何日志。POSThttp://king.im.com/upload/uploadPatch net::ERR_CONNECTION_RESET VM2095:1180SWFUpload.callFlashVM2095:1180SWFUpload.returnUploadSta...原创 2014-08-18 19:09:53 · 64669 阅读 · 9 评论 -
log4j指定包或类打到单独的日志文件的配置
根据日志定位问题的时候,如果所有的日志都打到一个日志文件里,查问题就很不直观了。 一、指定某个路径的包或类打到单独的日志文件 log4j.xml 配置如下: <appender name="poll" class="org.apache.log4j.DailyRollingFileAppender"> <param name="encoding" valu...原创 2015-01-15 17:53:12 · 15301 阅读 · 3 评论 -
DockerFile方式构建docker镜像
构建docker镜像有两种方式:commit和DockerFile。commit方式构造的镜像对用户不透明,你不知道作者在父镜像基础上做了什么改动。DockerFile的方式符合Infrastructure As Code的思想,通过这份文件你清楚的知道作者对父镜像做的变动。用DockerFile文件构建docker镜像一 demo程序class HelloDocker {原创 2017-12-03 22:46:48 · 1130 阅读 · 0 评论 -
《docker in acton》读书笔记:存储卷
存储卷定义 存储卷是一种数据分割和共享的工具。适用于持久化数据或者容器间共享数据镜像适合打包和分发相对静态的文件,如程序,程序的配置文件;存储卷则持有动态的或专门的数据,如日志,数据库。存储卷的类型绑定挂载存储卷:这种存储卷使用物理机上的文件系统docker管理卷:Docker守护进程会在物理机上创建一个存储空间,并有docker守护进程自己管理绑定挂载存储卷docker命令:docke原创 2017-12-30 21:10:19 · 1061 阅读 · 0 评论 -
docker学习笔记
一 docker资源docker官网:https://www.docker.com/mac版客户端官网下载链接: https://www.docker.com/docker-macdocker官方文档: https://docs.docker.com/get-started/part2/#build-the-appdocker hub: https://hub.docker.com/explore/原创 2017-11-26 23:49:05 · 612 阅读 · 1 评论 -
Shell学习笔记:export的作用
export功能创建一个环境变量,并对其子shell有效。没有用export声明的变量,仅对当前的shell可见。 用代码测试export的功能一 不用export声明变量父shellecho 'parent.sh start'ss=ruzunecho $ss./child.sh子shellecho 'child.sh start'echo $ss执行./parent.sh, 输出结果p原创 2017-08-25 21:41:49 · 3330 阅读 · 0 评论 -
把 >/dev/null 2>&1 干掉!
我们项目组几乎所有的java应用(不依赖tomcat运行),在启动时,都是这么个启动命令:nohup java -server $JAVA_OPTS -classpath $CORE_CLASSPATH com.jd.chat.core.CoreServer >/dev/null 2>&1 & 也就是说应用的全部日志会输出到/dev/null里面,说白了就是被黑洞吸收了。原创 2015-08-03 20:20:12 · 2751 阅读 · 0 评论 -
对多个tomcat部署同一个应用的认识
我做的客户端自动升级系统需要在内存或缓存中维持一根可用客户端产品的列表。考虑到在内存中进行读取的速度更快,于是选择在内存中存储一份可用客户端产品的列表。这个列表用一个静态列表对象保存。当新增,修改,淘汰客户端产品时,会对从数据库向这个内存对象中进行同步。这个设计是完全没有问题的。但是应用到多个tomcat部署这样的同一个实例的时候,问题就出来了。这也是今天上线的积累到的一个教训。上线之后发现,原创 2013-05-10 06:19:23 · 2286 阅读 · 0 评论 -
Linux下XAMPP装完之后,Navicat无法连上数据库的问题的解决
Linux下装完XAMPP之后,mysql是自带装好了的,这个时候,mysql的root用户没有密码。首先进入mysql,输入命令:mysql -uroot -p。输入密码时直接回车。设置密码:set password =password('123456');设置完密码之后,用本地的Navicat连接这个mysql,发现连不上,而且出现一个很奇怪的现象,弹出框显示,另一个ip下的roo原创 2013-03-11 18:46:27 · 7306 阅读 · 0 评论