post

进程与线程的一个简单解释

进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。

最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。

1.计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。

工厂
[Read more…]
post

大神手把手教你如何使用异步编程提升服务性能

作者:肖飞,2011年加入京东,目前在交易平台,主导交易平台核心系统的架构优化和技术攻关,以及公共技术组件和平台的建设。

庞大复杂的系统通常会采用服务化组件来实现。系统越复杂,组件之间的依赖和调用关系也会越复杂。对于处于底层的基础服务,直接和间接的调用所带来的流量压力非常大。处于中间层的聚合型服务,面对的挑战则是依赖的服务太多,后端个别服务的性能延迟就会影响其吞吐量。性能优化是我们系统稳定性中的重要一环,这其中,调用所依赖的RPC服务或后端数据是重点之一。

目前,除了传统JDBC这样从API到主流驱动实现就是阻塞式的类库之外,其他常用的RPC/HTTP服务、MQ、Redis、Mongodb、Kafka等系统都提供了成熟的基于NIO的客户端库,也有相应的异步API。

[Read more…]
post

我删除了Linode

10月22日,我删除了使用7年多的人Linode,共消费过1W多RMB,用着很舒服,很稳定,只是无奈于最近经常被封,趁着这次备案,将博客转移回国内腾讯云上了。

[Read more…]
post

WP Rocket 缓存插件,真的好用

之前本博客使用过 w3tc,后来改用 WP Super Cache,用了几年,最近发现还有一个更好用的 WP Rocket,果断从国外网站找了一个免费的试用一下。

随便打开一些开关后,就能正常使用,一点兼容性问题都没有,是真的好用,我现在已经将原来使用的 WP Super CacheBetter WordPress Minify 都卸载了。

[Read more…]
post

WordPress 响应慢,建立数据库连接时出错

之前博客响应特别慢,还经常出现“建立数据库连接时出错”这个错误,英文为“Error establishing a database connection”。

通过 top 命令发现 kswapd0 进程 CPU 占用过高,而 kswapd0 进程是系统的虚拟内存管理程序,如果物理内存不够用,系统就会唤醒 kswapd0 进程,由 kswapd0 分配磁盘 Swap 交换空间作缓存,因而占用大量的 CPU 资源。

如果 Swap 空间用光了,那么系统就会发生错误,通常会出现“application is out of memory”的错误,严重时会造成服务进程的死锁。

也正是因为内存不足,造成了数据库MySql进程被杀,导致 WordPress 出现“建立数据库连接时出错”。

[Read more…]
post

Mysql占用过高CPU时的优化手段

Mysql占用CPU过高的时候,该从哪些方面下手进行优化?

占用CPU过高,可以做如下考虑:

  1. 一般来讲,排除高并发的因素,还是要找到导致你CPU过高的哪几条在执行的SQL,show processlist语句,查找负荷最重的SQL语句,优化该SQL,比如适当建立某字段的索引;
  2. 打开慢查询日志,将那些执行时间过长且占用资源过多的SQL拿来进行explain分析,导致CPU过高,多数是GroupBy、OrderBy排序问题所导致,然后慢慢进行优化改进。比如优化insert语句、优化group by语句、优化order by语句、优化join语句等等;
  3. 考虑定时优化文件及索引;
  4. 定期分析表,使用optimize table;
  5. 优化数据库对象;
  6. 考虑是否是锁问题;
  7. 调整一些MySQL Server参数,比如key_buffer_size、table_cache、innodb_buffer_pool_size、innodb_log_file_size等等;
  8. 如果数据量过大,可以考虑使用MySQL集群或者搭建高可用环境。
  9. 可能由于内存latch(泄露)导致数据库CPU高
  10. 在多用户高并发的情况下,任何系统都会hold不住的,所以,使用缓存是必须的,使用memcached或者redis缓存都可以;
  11. 看看tmp_table_size大小是否偏小,如果允许,适当的增大一点;
  12. 如果max_heap_table_size配置的过小,增大一点;
  13. mysql的sql语句睡眠连接超时时间设置问题(wait_timeout)
  14. 使用show processlist查看mysql连接数,看看是否超过了mysql设置的连接数(http://www.cnblogs.com/kevingrace/p/6226324.html
[Read more…]
post

Nginx 405 not allowed解决办法

Apache、IIS、Nginx等绝大多数web服务器,都不允许静态文件响应POST请求,否则会返回“HTTP/1.1 405 Method not allowed”错误。

nignx的问题,一般可以通过下面的方法解决,只需要更改nginx配置,增加一句:

error_page 405 =200 http://$host$request_uri; 
[Read more…]
post

一张图了解MySql复制参数

一张图了解MySql复制参数:

MySql复制参数

post

升级LNMP,备份和还原WordPress

前一阵子心血来潮的要升级https,但是博客很久没升级了,使用的 LNMP 0.9 版本,环境不支持https,我尝试过手动升级,可还是比较麻烦的,而且问题比较多,一不做二不休,直接升级到 LNMP 1.3。

升级就意味着要重做系统,重新安装 Nginx、MySql,最重要的是 WordPress 的数据备份和恢复。

下面介绍一下升级LNMP以及备份和还原 WordPress、数据库的过程。
[Read more…]

aside

最近重做的LNMP ,博客、配置、数据库全部重来,还好之前都做好了备份。
但是问题还是有的,需要通过系统日志 /var/log/messages、PHP日志、MySql日志去分析。
[Read more…]