寻觅生命中的那一片浅草......

文章带标签 cache

启动MySQL时预热buffer_pool

MySQL5.6加入了一个把buffer_pool dump到磁盘的功能,加快MySQL重启后,数据的预热速度,我们用的Percona Server 5.5也加入了这个功能主要有以下几点:

  • 只dump页表的号码到磁盘,而不是数据 ,所以,即使你buffer_pool很大,实际dump出来的数据很小,文件存放在MySQL的数据目录
  • 可以设置固定时间间隔自动dump
  • 设置关闭时自动dump,开启时自动restore
  • innodb_buffer_pool_restore_at_startup=600,每10分钟保存buffer_pool到磁盘,这个只是保存了磁盘上数据的索引,并不是真正的数据,否则这个文件会非常大
  • innodb_blocking_buffer_pool_restore=1,在MySQL启动时,阻塞启动过程,直到buffer_pool预热后才通知系统已经启动成功
#!/bin/bash

# change online  
mysql -uroot -pxxx <<EOF
set @@global.innodb_buffer_pool_restore_at_startup=600;
select * from information_schema.XTRADB_ADMIN_COMMAND /*!XTRA_LRU_DUMP*/;
EOF

手动dump和restore

可以在MySQL启动后,select一个表的数据,然后查看buffer pool的page数量,手动把buffer pool dump到磁盘,再重启MySQL,看它是否会restore

一些命令:

# 查看buffer pool的数据大小
show status like 'innodb_buffer_pool_pages_data';
# 手动dump
select * from information_schema.XTRADB_ADMIN_COMMAND /*!XTRA_LRU_DUMP*/;
#手动restore
select * from information_schema.XTRADB_ADMIN_COMMAND /*!XTRA

用Nginx的proxy_cache加速gitbucket

最近访问gitbucket,基本都要5-6s才能打开,在服务器上看java进程占用CPU500%,通过下面的proxy_cache配置,把图片等静态资源缓存起来,可以实现gitbucket秒开,CPU使用降到30%左右,效果非常明显

创建目录并给予Nginx运行用户权限

mkidr /data/cache/nginx
chown -R www.www /data/cache/nginx

http段配置

定义cache的存放路径

http{
proxy_cache_path /data/cache/nginx levels=1:2 keys_zone=cache:512m inactive=1d  max_size=60g;
# 下面省略其他配置
....
....
}

修改虚拟主机配置

# 注意下面的配置要放在location / {这个目录配置之前
location ~ \.(gif|png|txt|css|png|jpe?g|ico|js)$ { 
     proxy_pass http://localhost:8088;
     proxy_hide_header       Set-Cookie;
     proxy_ignore_headers    Set-Cookie Expires Cache-Control;

     proxy_redirect    off;
     proxy_buffering on;
     proxy_buffer_size  128k;
     proxy_buffers 100  128k;

     proxy_cache cache;
     proxy_cache_key $uri;
     proxy_cache_use_stale error timeout invalid_header;
     proxy_cache_valid 200 301 302 60h;
     expires 30d;
}

 

2024年四月
« 5月    
1234567
891011121314
15161718192021
22232425262728
2930