霜天部落 | 专注PHP研发,研究LAMP高性能架构部署与优化

系统负载能力浅析

一. 衡量指标

用什么来衡量一个系统的负载能力呢?有一个概念叫做每秒请求数(Requests per second),指的是每秒能够成功处理请求的数目。比如说,你可以配置tomcat服务器的maxConnection为无限大,但是受限于服务器系统或者硬件限制,很多请求是不会在一定的时间内得到响应的,这并不作为一个成功的请求,其中成功得到响应的请求数即为每秒请求数,反应出系统的负载能力。

通常的,对于一个系统,增加并发用户数量时每秒请求数量也会增加。然而,我们最终会达到这样一个点,此时并发用户数量开始“压倒”服务器。如果继续增加并发用户数量,每秒请求数量开始下降,而反应时间则会增加。这个并发用户数量开始“压倒”服务器的临界点非常重要,此时的并发用户数量可以认为是当前系统的最大负载能力。

二. 相关因素

一般的,和系统并发访问量相关的几个因素如下:

  • 带宽
  • 硬件配置
  • 系统配置
  • 应用服务器配置
  • 程序逻辑
  • 系统架构

其中,带宽和硬件配置是决定系统负载能力的决定性因素。这些只能依靠扩展和升级提高。我们需要重点关注的是在一定带宽和硬件配置的基础上,怎么使系统的负载能力达到最大。 Read more ›

17款最佳的代码审查工具

虽然现在市场上有许多可用的代码审查工具,但如何挑选也是一个艰巨的任务。在咨询过有关专家的建议和意见之后,我们罗列出了以下17款最佳的代码审查工具。

1)CodeStriker

CodeStriker是一个免费&开源的Web应用程序,可以帮助开发人员基于Web的代码审查。它不但允许开发人员将问题、意见和决定记录在数据库中,还为实际执行代码审查提供了一个舒适的工作区域。

官方网站:http://codestriker.sourceforge.net/index.html Read more ›

App项目实战API篇

REST API

关于什么是REST,我就不在这里赘述了,直接推荐REST作者的经典论文:

下面我只想用一些实例描述几种架构风格在API定义方面的不同。

假如现在要定义登录、退出登录、注册、查询用户资料的接口,那么,可以这样定义:

接口 方法 Endpoint
登录 POST /user/login
退出登录 POST /user/logout
注册 POST /user/register
查询用户资料 GET /user/queryInfo

使用这种风格的貌似很多。也有些不是在URI中定义接口,而在参数中用method或action之类的参数名区分不同接口,示例如下: Read more ›

PHP7:Mongodb API使用

编译安装PHP7 Mongdb扩展
#先安装一个依赖库

1
2
3
4
5
6
7
8
9
yum -y install openldap-devel
wget https://pecl.php.net/get/mongodb-1.1.1.tgz  
/home/server/php7/bin/phpize   #根据自己编译的PHP环境而定
./configure with-php-config=/home/server/php7/bin/php-config
make && make install

#如果成功,生成一个mongodb.so扩展在lib/php/extensions/no-debug-non-zts-20151012/
修改php.ini配置
extension=mongodb.so

注: Read more ›

Ubuntu16.04安装redis和redis扩展

1、安装redis服务

sudo apt-get install redis-server
一般情况下上面redis-server是能够正确安装的,我反正就是这样安装上的。
如果是在不行就可以参照oschina上的这篇
安装完成后可以

ps aux | grep redis
查看redis服务是否启动

if (没有启动)
sudo service redis-server start
如果启动了然后可以

redis-cli
进入redis的命令行(127.0.0.1:6379: >就这样样子),这下你就可以尽情的玩了,可是不php结合起来你确定你能玩的很尽兴,还是耽搁几分钟来装个php扩展吧

2、安装php扩展
下载redis扩展:

1
2
3
4
5
6
7
8
#redis
wget http://download.redis.io/releases/redis-3.0.7.tar.gz

#phpredis 非php7使用 下载后文件名为:phpredis-develop
wget https://codeload.github.com/phpredis/phpredis/zip/develop

#phpredis PHP7专属 下载后文件名为:phpredis-php7
wget https://codeload.github.com/phpredis/phpredis/zip/php7

解压缩:unzip php-redis.zip
进入目录:cd php-redis
运行:phpize (ps:这个是php-dev下的编译扩展的工具,如果没有的话快点执行 sudo apt-get install php-dev安装)
运行配置文件以生成Makefile:./configure
生成共享库(比如redis.so):make
命令行会提示执行”make test”,虽然不是必须的,但小心驶得万年船啊~兄弟!!如果此处没有问题的话那我们继续

安装:sudo make install
最后会得到提示已经将软件安装到了/usr/lib/php/20151012/,这个安装的本质就是把我们之前生成的共享库文件拷贝过来,就这样。

最后直接在php.ini的文件里加上extension=redis.so就行了

浅析UGC,PGC和OGC

        一般认为Web2.0(论坛、博客为代表)和Web3.0(社交平台、微博客为代表)的相继流行,UGC(User-generated Content,用户生产内容,也称UCC,User-created Content)功不可没。随着移动互联网的发展,网上内容的创作又被细分出PGC(Professionally-generated Content,专业生产内容,也称PPC,Professionally-produced Content)和OGC(Occupationally-generated Content,职业生产内容),甚至有UGC、PGC和OGC谁是主 流的讨论。

Read more ›