2017年5月

回家

忘记订回家的票了,只订到了站票,上海回西安的直达车时间合适的还是少,遇到节假日人更是多多多,还好上车直奔4号车厢,坐餐车,到第二天早上6点,收60管一顿快餐……

变化永远比计划快……

---阅读剩余部分---

CentOS/RedHat下清除history记录

histort历史记录可以有效地提升效率,特别是对于记性不好的懒人来说,不过也存在一些安全隐患。

HISTTIMEFORMAT 显示时间戳
当你从命令行执行 history 命令后,通常只会显示已执行命令的序号和命令本身。如果你想要查看命令历史的时间戳,那么可以执行:

export HISTTIMEFORMAT='%F %T '

设置以后查看history即可按日期时间显示记录


---阅读剩余部分---

mysqldumpslow使用说明 分析慢日志

一、慢查询日志介绍
MySQL中,SQL的执行效率直接影响了MySQL的性能。为了及时发现并处理有性能异常的SQL,MySQL专门设立了慢查询日志(slow query log)。SQL执行时间大于long_query_time设定的时候,MySQL就会将这条SQL记录到慢查询日志中。

MySQL慢查询日志既可以保存成文件,又可以保存在MySQL的表中。由于保存在表中,会给数据库带来额外的压力,一般都保存在文件中,其保存路径由slow_query_log_file变量决定。

慢查询日志记录了SQL的执行日期时间、SQL查询消耗时间、锁定时间、以及SQL语句。慢查询日志是一个流水账,并不能很好的用于统计分析。

二、慢查询用法
mysqldumpslow能将相同的慢SQL归类,并统计出相同的SQL执行的次数,每次执行耗时多久、总耗时,每次返回的行数、总行数,以及客户端连接信息等。



---阅读剩余部分---

MySQL5.7.x开启慢查询日志

一般SQL写的很烂的话,系统一有访问量、数据一大,容易卡死,需打开慢查询分析,方法如下:
1、在/etc/my.cnf中的[mysqld]中加入如下代码:

slow-query-log = On        #开启慢查询
slow_query_log_file = /data/mysql/mysql_slow_query.log        #定义慢查询日志的路径 
log_output = FILE      #设置日志输出到文件,默认为输出到table
long_query_time = 5        #定义查过多少秒的查询算是慢查询
log_queries_not_using_indexes = ON    #记录下没有使用索引的query

重启Mysql服务即可打开慢查询日志.


---阅读剩余部分---

MySQL 清空数据库中的所有表及导出/导入表、结构

清空所有表SQL
mysql -N -s information_schema -e "SELECT CONCAT('TRUNCATE TABLE ',TABLE_NAME,';') FROM TABLES WHERE TABLE_SCHEMA='TABLE_NAME'" | mysql -f TABLE_NAME

例如:
mysql -N -s information_schema -e "SELECT CONCAT('TRUNCATE TABLE ',TABLE_NAME,';') FROM TABLES WHERE TABLE_SCHEMA='langold_enrolment_db'" | mysql -f langold_enrolment_db

加-f参数是为了清理掉外键,要么会报错



---阅读剩余部分---

Linux下使用 ipset 封大量IP及ipset参数说明

Linux使用iptables封IP,是常用的应对网络攻击的方法,但要封禁成千上万个IP,如果添加成千上万条规则,对机器性能影响较大,使用ipset能解决这个问题。

iptables 包含几个表,每个表由链组成。默认的是 filter 表,最常用的也是 filter 表,另一个比较常用的是nat表,封IP就是在 filter 表的 INPUT 链添加规则。
在进行规则匹配时,是从规则列表中从头到尾一条一条进行匹配。
这像是在链表中搜索指定节点费力。ipset 提供了把这个 O(n) 的操作变成 O(1) 的方法:就是把要处理的 IP 放进一个集合,对这个集合设置一条 iptables 规则。像 iptable 一样,IP sets 是 Linux 内核中的东西,ipset 这个命令是对它进行操作的一个工具。



---阅读剩余部分---

redis overcommit memory (oom) 问题报错解决方法

一,什么是overcommit or oom问题
Linux对大部分申请内存的请求都回复"yes",以便能跑更多更大的程序。因为申请内存后,并不会马上使用内存。这种技术叫做Overcommit。当linux发现内存不足时,会发生OOM killer(OOM=out-of-memory)。它会选择杀死一些进程(用户态进程,不是内核线程),以便释放内存。


---阅读剩余部分---

php扩展redis模块

1、到https://github.com/nicolasff/phpredis/下载phpredis最新版
2、将刚下好的压缩包解压到php源码目录下的ext中,即/opt/php-NN/ext/phpredis
mv phpredis-NN /opt/php-NN/ext/phpredis
3、将phpredis加入php拓展模块

cd /opt/php-NN/ext/phpredis
/usr/local/php5/bin/phpize  (如果在编译php时configure没有加足够的参数可能会在目录下缺少phpize)
./configure --with-php-config=/usr/local/php5/bin/php-config (同样后面参数也很重要)
make 
make install

Installing shared extensions: /usr/local/php5/lib/php/extensions/no-debug-non-zts-20121212/

编辑php.ini
加入参数:

extension_dir = "/usr/local/php5/lib/php/extensions/no-debug-non-zts-20121212/"
extension=redis.so

重启php-fpm和nginx即可

Linux下有效修改最大文件句柄数 max open files及ulimit原理

limits.conf 工作原理
limits.conf 是 pam_limits.so 的配置文件,然后 /etc/pam.d/ 下的应用程序调用 pam_*.so 模块。譬如说,当用户访问服务器,服务程序将请求发送到 PAM 模块,PAM 模块根据服务名称在 /etc/pam.d 目录下选择一个对应的服务文件,然后根据服务文件的内容选择具体的 PAM 模块进行处理。

limits.conf 文件格式

username|@groupname   type  resource  limit 
1)username|@groupname
设置需要被限制的用户名,组名前面加 @和用户名区别。也可用通配符 * 来做所有用户的限制

2)type
类型有 soft,hard 和 -,其中 soft 指的是当前系统生效的设置值。hard 表明系统中所能设定的最大值。soft 的限制不能比 hard 限制高。用 - 就表明同时设置了 soft 和 hard 的值

3)resource: 表示要限制的资源

nofile - 打开文件的最大数目
noproc - 进程的最大数目

ulimit 命令用来限制系统用户对 shell 资源的访问,常用参数解释如下

ulimit(选项)

-a:显示目前资源限制的设定;
-c <core 文件上限 & gt;:设定 core 文件的最大值,单位为区块;
-d < 数据节区大小 & gt;:程序数据节区的最大值,单位为 KB;
-f < 文件大小 & gt;:shell 所能建立的最大文件,单位为区块;
-H:设定资源的硬性限制,也就是管理员所设下的限制;
-m < 内存大小 & gt;:指定可使用内存的上限,单位为 KB;
-n < 文件数目 & gt;:指定同一时间最多可开启的文件数;
-p < 缓冲区大小 & gt;:指定管道缓冲区的大小,单位 512 字节;
-s < 堆叠大小 & gt;:指定堆叠的上限,单位为 KB;
-S:设定资源的弹性限制;
-t <CPU 时间 & gt;:指定 CPU 使用时间的上限,单位为秒;
-u < 程序数目 & gt;:用户最多可开启的程序数目;
-v < 虚拟内存大小 & gt;:指定可使用的虚拟内存上限,单位为 KB。

使用ulimit -a 可以查看当前系统的所有限制值,使用ulimit -n 可以查看当前的最大打开文件数。
新装的linux默认只有1024,当作负载较大的服务器时,很容易遇到error: too many open files。因此,需要将其改大。
使用 ulimit -n 65535 可即时修改,但重启后就无效了。(注ulimit -SHn 65535 等效 ulimit -n 65535,-S指soft,-H指hard)
有如下三种修改方式:
1.在/etc/rc.local 中增加一行 ulimit -SHn 65535
2.在/etc/profile 中增加一行 ulimit -SHn 65535
3.在/etc/security/limits.conf最后增加如下两行记

* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535
---------------------------------------------
cat <<EOF>> /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535
EOF

CentOS6修改线程参数:sed -i "s/1024/65535/g" /etc/security/limits.d/90-nproc.conf
CentOS7修改线程参数:sed -i "s/4096/65535/g" /etc/security/limits.d/20-nproc.conf
具体使用哪种,试试哪种有效吧,CentOS中使用第1种方式无效果,使用第3种方式有效果,而在Debian中使用第2种有效果.
open file(s) kernel 级别有2个配置,分别是:

fs.nr_open,进程级别
fs.file-max,系统级别
fs.nr_open 默认设置的上限是 1048576,所以用户的 open file(s) 不可能超过这个上限。

VIA:
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/5/html/tuning_and_optimizing_red_hat_enterprise_linux_for_oracle_9i_and_10g_databases/chap-oracle_9i_and_10g_tuning_guide-setting_file_handles

CentOS6.x和7.x时区设置

一、时区
显示时区
date --help 获取帮助
date -R
date +%z
上面两个命令都可
[plain] view plain copy
[root@localhost ~]# date -R; date +%z
Fri, 19 Oct 2012 23:34:27 +0800
+0800
主要就是后面的+0800,东八区

修改时区
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

CentOS7.x可以直接设置为上海的时区 timedatectl set-timezone Asia/Shanghai












---阅读剩余部分---

Linux多用户访问共享文件夹

  实现场景某个文件夹,多用户都可以编辑\删除更新等,及实现文件夹共享功能,实现步骤如下:

groupadd ceshi
useradd t1 --groups ceshi
useradd t2 --groups ceshi 

mkdir /data/testfile
chmod -R 770 /data/testfile
chown t1 /data/testfile/
chgrp ceshi /data/testfile/

setfacl -d --set g:ceshi:rwx /data/testfile/
setfacl -R -m g:ceshi:rwx /data/testfile/
chmod g+w /data/testfile/

t1和t2即可对/data/testfile/目录下的任何文件、文件夹有操作权限,t1和t2都属于ceshi用户组,其他用户要加进来,只要用户组属于ceshi组即可。

LNMP环境“Undefined class constant 'MYSQL_ATTR_INIT_COMMAND'”解决办法

错误问题日志:

2017/05/20 23:44:20 [error] 12171#0: *5 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Undefined class constant 'MYSQL_ATTR_INIT_COMMAND' in /data/www/zg/core/library/dbpdo.class.php on line 15" while reading response header from upstream

Nginx前台直接500了,主要是php没有安装pdo,而程序里面链接用的是pdo_mysql,解决方法如下:
下载并安装PDO_MYSQL


---阅读剩余部分---

让IE6 IE7 IE8 IE9 IE10 IE11支持Bootstrap 提高兼容性

一些挺好看的H5模板和Bootstrap模板在Chrome/Firefox/Safari下都正常,但是在IE下浏览面目全非,整理了下解决方法:

一、引入依赖的Javascript:

https://cdn.bootcss.com/html5shiv/3.7.3/html5shiv.js
https://cdn.bootcss.com/respond.js/1.4.2/respond.min.js

这2个Javascript 是在本站开放CDN 上,您可以复制地址直接使用,安全和稳定性不用担心。如果担心的,本博客下附件可以下载,另外要引用 Jquery,根据版本引入

<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>

http://www.bootcdn.cn/jquery/这里有各版本的jquery

---阅读剩余部分---

Windows下查看端口对应的进程及kill

查看所有进程占用的端口
netstat –ano 查看所有进程

查看占用指定端口的程序
netstat –ano|findstr "指定端口号"

通过任务管理器杀死相关的进程
方法一:使用任务管理器杀死进程
打开任务管理器->查看->选择列->然后勾选PID选项,回到任务管理器上可以查看到对应的pid,然后结束进程

方法二:使用命令杀死进程
1>首先找到进程号对应的进程名称
tasklist|findstr 进程号
如:tasklist|findstr 80

2>然后根据进程名称杀死进程
taskkill /f /t /im 进程名称
如:taskkill /f /t /im /qq.exe

好几年不见大规模的病毒了

  03年的冲击波、04年的变种病毒震荡波,大肆火了一把,到今年,这快10年了,出来的大的病毒不多,木马不少;从侧面也反映了黑产的转型,这几年主要基本是木马,有目地的商业病毒木马泛滥。

  上周听绿盟的专家讲座,一些商业木马,能潜伏好几年,这也是真奇葩,话说这木马也真能耐得住寂寞^o^

  黑产暗网里面有很多未公布的漏洞,"永恒之蓝"只是其中的冰山一角。

查看Tomcat内存实际占用

  使用ps -ef | grep port 查找出具体tomcat的pid,然后使用 jmap -heap pid就可以看出整个对内存的使用情况了:

[tomcat@hch_test_web_1_24 home]$ jmap -heap 23710
Attaching to process ID 23710, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 24.55-b03

using thread-local object allocation.
Parallel GC with 18 thread(s)

Heap Configuration:
   MinHeapFreeRatio = 40
   MaxHeapFreeRatio = 70
   MaxHeapSize      = 2147483648 (2048.0MB)
   NewSize          = 1310720 (1.25MB)
   MaxNewSize       = 17592186044415 MB
   OldSize          = 5439488 (5.1875MB)
   NewRatio         = 2
   SurvivorRatio    = 8
   PermSize         = 536870912 (512.0MB)
   MaxPermSize      = 2147483648 (2048.0MB)
   G1HeapRegionSize = 0 (0.0MB)

Heap Usage:
PS Young Generation
Eden Space:
   capacity = 535298048 (510.5MB)
   used     = 309708648 (295.3611831665039MB)
   free     = 225589400 (215.1388168334961MB)
   57.857234704506155% used
From Space:
   capacity = 89128960 (85.0MB)
   used     = 19648888 (18.73863983154297MB)
   free     = 69480072 (66.26136016845703MB)
   22.04545862534467% used
To Space:
   capacity = 85458944 (81.5MB)
   used     = 0 (0.0MB)
   free     = 85458944 (81.5MB)
   0.0% used
PS Old Generation
   capacity = 1431830528 (1365.5MB)
   used     = 311125312 (296.71221923828125MB)
   free     = 1120705216 (1068.7877807617188MB)
   21.729199504817373% used
PS Perm Generation
   capacity = 536870912 (512.0MB)
   used     = 212898400 (203.03573608398438MB)
   free     = 323972512 (308.9642639160156MB)
   39.6554172039032% used

34822 interned Strings occupying 3865248 bytes.

最新

分类

归档

评论

  • 安安: 都是af
  • Liang: 嗯,有点不通顺·
  • 王庭威: “MySQL互为主从...
  • Liang: 贴下编译参数和步骤,...
  • shao3911: 您好,为什么我在编译...
  • aliang: 先看是yum安装还是...
  • aliang: 将原来的nginx安...
  • yen: 3、如果要回滚的话,...
  • yen: 刚好需要升级ngin...
  • 文雨: 一些新的method...

其它