Home > 工作记录
  • 【工作】解决由”ip_conntrack”导致的keepalived频繁切换问题

    状况描述: 线上有两台Server使用keepalived+nginx做前端Web代理,最近发现keepalived经常频繁的由主切换到从,keepalived脚本检查的规则是通过对两个业务的网页(专门用于检测,不对外提供业务)进行curl,curl的超时时间是5秒,如果两个页面返回状态码同时不为200时候,停止keepalived服务,切换到从。 解决过程: 阶段一: 当接到报警发现主从切换后,第一时间上到服务器上,发现确实切换了,但是由于切换都是1s内,对业务并没有造成影响,所以没有立刻将VIP切回到主上。   首先,查看keepalived的log:   # ta...
    阅读全文 →
  • 【工作】MySQL InnoDB引擎转换为MyISAM引擎方法

    MySQL 5.5以上默认数据库引擎为InnoDB,InnoDB虽然带来很多特性上的改进,但是对系统资源占用,尤其是内存占用明显增加,所以对于小内存或者单机使用的服务器,还是使用MyISAM更为合适。 从InnoDB引擎转换成MyISAM引擎 (MySQL命令行下使用SHOW ENGINES命令可以查看数据库默认引擎,或者查看my.cnf文件) 方法一:修改单个表的存储引擎:   进入MySQL命令行模式,然后执行以下指令(以数据库wikidb数据库为例):   mysql> use wikidb   查看表的默认引擎: mysql> show create table my_wikiarchive\G ) EN...
    阅读全文 →
  • 【工作】指定Tomcat的初始化内存和JDK版本

    写在前面: 有时候有些Tomcat程序运行时需要指定的JDK版本和初始化内存大小,而有些系统自带的JDK版本太低,无法满足需求,所以我们需要更改Tomcat的配置文件,指定这些参数。 配置方法: 配置方法很简单,就是在Tomcat的启动脚本中修改和添加相关参数即可,下面是Linux上修改的方法。 # vim /opt/apache-tomcat-7.0.28/bin/catalina.sh 添加如下内容: #指定tomcat使用的jdk版本(先安装好) export JAVA_HOME=/opt/jdk1.7.0_76 #指定初始化内存大小为1G,最大为2G export JAVA_OPTS="-server -Xms1G -Xmx2G -X...
    阅读全文 →
  • 【工作】解决Nginx访问日志中报favicon.ico文件404错误

    二手攻城狮  /
     / 工作记录, 应用服务
    报错现象: 经常会在Nginx虚拟主机的访问日志里有"GET /favicon.ico HTTP/1.1" 404 288 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon)"这样的报错,但是又不影响访问,决定解决这个报错问题。 favicon.ico的作用: 一般用于作为缩略的网站标志,它显示在浏览器的地址栏、浏览器标签上或者在收藏夹上(如下图),是展示网站个性的缩略logo标志,也可以说是网站头像,目前主要的浏览器都支持favicon.ico,一般访问网站时候会自动搜寻网站下的/favicon.ico 文件(如果在网页上没有特别指明...
    阅读全文 →
  • 【工作】Nginx限制IP并发连接数和请求数的研究

    二手攻城狮  /
     / 工作记录, 应用服务
    写在前面: 公司最近需要对某个虚拟主机进行用户并发链接限制,具体需求是当某个IP超过指定的链接数时,返回服务繁忙的提醒页面。 实现过程: Nginx限制IP连接数使用的是ngx_http_limit_conn_module模块,可以通过这个模块的中“limit_conn_zone”和“limit_conn”两个参数实现。   Nginx限制请求数使用的是ngx_http_limit_req_module模块,可以通过这个模块中“limit_req_zone”和“limit_req”两个参数实现。 ngx_http_limit_conn_module模块研究: limit_conn_zone: 功能:用于定义一个zone,该zome将会被用于存储会话...
    阅读全文 →
  • 【工作】实现Nginx每天自动切割日志功能

    写在前面: 由于公司网站之前没有做过日志切割,造成Nginx日志文件不断增长达到了几百G,现在要监控访问日志,这么大的日志分析起来非常不方便,所以现在需要每天把Nginx日志文件切割,然后以时间命名备份起来,方法如下: 方法一: 写脚本放到定时任务中,每天零点把旧的日志移动到备份目录中,并对nginx进程发送USR1信号使其重新生成日志并写入数据,然后删除60天之前的备份。   创建备份目录,并编写脚本: # mkdir -p /opt/nginx-1.9.3/logs/logs_bak # vi /opt/nginx-1.9.3/sbin/cut_nginx_log.sh   #!/bin/b...
    阅读全文 →
  • 【工作】解决服务器重启后bond网卡无法正常通信

    写在前面: 之前另外一个事业部刚成立时候没有运维,他们业务的所有服务器都由我们这边来安装配置,后来他们有自己的运维后,服务器和权限逐步移交过去了,但是最近那边运维反应我们之前装的一台服务器重启后,Web服务不能正常访问,希望帮忙查下问题。 问题描述: 这台服务器是他们前端Web服务器,上面配置的外网地址,现在现象是网站无法正常访问,通过telnet 80端口发现有时候成功有时候不成功。 解决过程: 经过排查防火墙等配置,发现没有问题,根据现象查看网卡配置,发现其中一个网卡的MAC地址跟bond的MA...
    阅读全文 →
  • 【工作】Zabbix 高可用架构的实现

    写在前面: 此文是之前公司领导让研究下zabbix的高可用时,在测试环境做的搭建笔记,后来因为一些原因推迟上线了,再后来离职了,毕竟是花费时间研究了,记录下以供参考和指点。 一、架构设计及环境规划: 架构设计图: 架构设计说明: 1. 基础架构为LAMP环境,采用keepalived实现zabbix服务器高可用,保证主server的mysql或者httpd宕掉后能切换到从server 2、数据库做主主同步,保证两边服务器数据的一致性,实现数据库的高可用。 3、采用unison同步软件保证不管修改那台服务器配置,zabbix配置目录及web目录内...
    阅读全文 →
  • 【工作】解决Linux系统使用unzip解压后中文名乱码问题

    写在前面: 之前的一些工作遇到的问题都是以笔记的形式记录,现在开了博客后,打算把之前觉得有用的笔记放到博客上,帮助别人的同时,自己没事还能温故知新一下,一举两得。 问题现象: 如文章标题所说,Linux系统使用unzip解压zip软件包后,中文名乱码   问题原因: 此问题是由于zip格式的缺陷,zip文件格式中没有字段标志出文件名的编码格式,Windows下生成的zip文件中的编码是GBK/GB2312等,由于zip文件中没有声明其编码,所以 linux上的unzip一般以默认编码UTF8解压,因此,导致这些zip文件在Linux下解压时出...
    阅读全文 →
  • 【工作】MySQL MHA+Atlas读写分离集群搭建详细记录

    二手攻城狮  /
     / 工作记录, 数据存储
    写在前面: 1.对于MySQL读写分离的实现,很早之前在看一些技术书和文章时候都了解过,但是系统的搭建和研究并没有。而目前公司得数据库架构基本是主主模式,考虑到今后数据访问量的提升,正好最近工作不是太忙,可以空出一些时间,决定仔细研究下MySQL读写分离集群的搭建。 2.本文可以说原创也可以说不是,因为是结合了很多网上的文档和文章编写出来的,而说原创的话,是因为所有的过程都是自己研究并记录的,包括对网上的一些文章中没有解决的问题和一些写的错误的地方都进行了改善和记录。当然本文也有很多不完...
    阅读全文 →
  • 【工作】Tomcat参数配置错误导致CPU使用率飙升至好几百

    二手攻城狮  /
     / 工作记录, 应用服务
    问题描述: 线上环境的das项目的 full gc 频繁, 且导致 cpu 飙至好几百,如下图: 解决办法: 通过dump 文件分析,org.apache.coyote.http11.InternalOutputBuffer  81个对象占用 48%内存,   根据经验定位为tomcat参数没配置好,在tomcat的server.xml文件中删除下面参数: maxPostSize="10485760" maxHttpHeaderSize="10485760"   重启tomcat服务后,问题解决。   参数说明: maxPostSize:Tomcat 默认的post参数的最大大小为2M, 当超过时将会出错,可以配置maxPostSize参数来改变大小。”0” 表示不限制大小...
    阅读全文 →
  • 【工作】线上MySQL远程长连接很短时间就超时夯(hang)住问题解决

    二手攻城狮  /
     / 工作记录, 数据存储
    现象说明:   研发说有一台线上服务器(此处称为A服务器)需要远程连接数据库服务器,A服务器上配置了连接池,需要每小时跑一次任务,连接池设置的超时时间也很长,但是发现如果没有数据传输,不到半小时数据库上的连接就消失了,而A服务器上面的已建立的连接却夯住不动了,无法继续执行sql命令,需要运维查看下什么原因   问题排查:   根据研发描述的状况,如果应用的连接池设置时间没有问题,就需要考虑的是数据库的超时设置,于是登录数据库服务器,进行如下操作: mysql> show global variables like 'wait...
    阅读全文 →