海量数据处理和高并发问题本本身就是web开发的精髓。新手程序员只写代码不考滤代码以外的其它问题,资深程序员不仅要写代码还要进行优化,让代码执行速度更高效。这主要是编程习惯的问题,很多人的思想是只要能把东西写出功能实现就算成功!写东西时要多考滤业务罗辑处理。下面几点是我处理这类问题的方法。
一、代码优化(包括sql语句的优化), 合理的使用索引,避免整表查询。
二、日常海量数据处理我用文件缓存,文件缓存分两种,第一种是最常见的生成html静太文件,除非数据有变动不然是不会查询数据库,其次.html文件更容易被搜索引擎收录,生成静太缓存也是有讲究的,最好是把生成的文件分布一下,别把生成的几百万个文件都放在一个目录里。第二种是对于使用高频率的数据生成数据缓存,如商城网站中的分类列表,把分类数据表中所有数据以数组或其它方式存放在一个文件中,需要用的时候只要读取这个文件就可以了,尽可能的减少对数据的操作,引用一句通俗一点的话就是“空间换速度”。什么时候需要更新缓存你可以自己定规则。
三、对于高并发处理我用了一个插件工具memcached,它实现的是虚拟缓存,把数据存在服务器的内存中,详情查看memcached说明。因此如果网站数据量非常大并且用户也常非多时这种方法对服务器要求会很高,为了把服务器的价值给最大化我只用它来做修改和插入的并发。
所以从上面的问题来看海量数据并不是最大问题,以上方法都用了还是不行可以使用多台服务器分配负载,真有这么多用户和数据的话每天的收入也足够多配一台服务器了。所高并发才是我们要处理的根本问题。
以上内容整理自:http://bbs.phpchina.com/forum.php mod=viewthread&tid=266611&page=1&authorid=167653
php-高并发处理:
1.硬件方面
普通的一个p4的服务器每天最多能支持大约10万左右的IP,如果访问量超过10W那么需要专用的服务器才能解决,如果硬件不给力 软件怎么优化都是于事无补的。主要影响服务器的速度
有:网络-硬盘读写速度-内存大小-cpu处理速度。
2.数据库
首先数据库要有一个很好的架构,查询尽量不用* 避免相关子查询 给经常查询的添加索引 用排序来取代非顺序存取,如果条件允许 ,一般MySQL服务器最好安装在Linux操作系统中 。关于Apache和Nginx在高并发的情况下推荐使用Nginx,ginx是Apache服务器不错的替代品。Nginx内存消耗少 官方测试能够支撑5万并发连接,在实际生产环境中跑到2~3万并发连接数。php方面不需要的模块尽量关闭,使用memcached,Memcached 是一个高性能的分布式内存对象缓存系统,不使用数据库直接从内存当中调数据,这样大大提升了速度,iiS或Apache启用GZIP压缩优化网站,压缩网站内容大大节省网站流量。
3.禁止外部的盗链。
外部网站的图片或者文件盗链往往会带来大量的负载压力,因此应该严格限制外部对于自身的图片或者文件盗链,好在目前可以简单地通过refer来控制盗链,Apache自己就可以通过配置来禁止盗链,IIS也有一些第三方的ISAPI可以实现同样的功能。当然,伪造refer也可以通过代码来实现盗链,不过目前蓄意伪造refer盗链的还不多,可以先不去考虑,或者使用非技术手段来解决,比如在图片上增加水印。
4.控制大文件的下载。
大文件的下载会占用很大的流量,并且对于非SCSI硬盘来说,大量文件下载会消耗CPU,使得网站响应能力下降。因此,尽量不要提供超过2M的大文件下载,如果需要提供,建议将大文件放在另外一台服务器上。
5.使用不同主机分流主要流量
将文件放在不同的主机上,提供不同的镜像供用户下载。比如如果觉得RSS文件占用流量大,那么使用FeedBurner或者FeedSky等服务将RSS输出放在其他主机上,这样别人访问的流量压力就大多集中在FeedBurner的主机上,RSS就不占用太多资源了
6.使用流量分析统计软件。
在网站上安装一个流量分析统计软件,可以即时知道哪些地方耗费了大量流量,哪些页面需要再进行优化,因此,解决流量问题还需要进行精确的统计分析才可以。我推荐使用的流量分析统计软件是Google Analytics(Google分析)。我使用过程中感觉其效果非常不错,稍后我将详细介绍一下Google Analytics的一些使用常识和技巧。
以上内容整理自:http://www.jb51.net/article/27470.htm
如您从本文得到了有价值的信息或帮助,请考虑扫描文末二维码捐赠和鼓励。
如本文对您有用,捐赠和留言 将是对我最好的支持~(捐赠可转为站内积分)
如愿意,请向朋友推荐本站,谢谢。
尊重他人劳动成果。转载请务必附上原文链接,我将感激不尽。