php广告系统优化感想
来源:互联网 发布:淘宝和快递合作多少钱 编辑:程序博客网 时间:2024/05/02 02:48
广告系统优化感想
这几个月独自完成了处理接近500万会员的广告系统。
此广告系统不是一般的静态广告,而是每个广告都是个性化的,什么叫个性化,也就是根据每个人的特征投放不同的广告。广告处数不多,但是有些还是有点复杂的。
例如登陆弹窗,登陆弹窗里面的信息是好几个库里面的综合信息,业务都是分离的,这意味着每个人每次登陆要获取的广告要取比较多的信息,而且信息量还不少。
先说这次设计上不足的地方,这是我在这次设计上自己意识不足导致的:
1. 没有意识到多处广告都是在登陆的时候可以一次性获取的,所以,不应该分开了多次请求进行获取,这样子会加大请求数量,增加服务器压力,而应该一次性把此会员的所有广告返回,这样子减少了四五个请求量。
2. 大数据量的缓存不应该使用文件缓存,而应该使用内存缓存。而且内存缓存也应该设计过数据结构以后再进行存储,这样子可以有效的减少逻辑处理时间,增加php速度
3. 广告上线以后,有这几个bug都是因为0或者空array导致不停请求数据库,导致服务器挂掉,这是我自己的不慎导致的,要为这个负全责,幸好最后自己能够找出问题。
4. 没有充分利用已有资源,导致很多基础的东西需要自己重新实现,增加开发时间,以及性能问题
这次使用的服务器配置主要是:
一台Redis+一台php和mysql服务器
编码方式:
Oo
分类方式:
按模块划分,这样子我觉得可以灵活删除模块或者增加模块,不过一位长者认为这个不好,导致文件比较零散。
底层框架:
自己搭建了一个比较简单的框架(是否好,有待斟酌)
数据结构:
1. 以前的业务不能动,所以以前的业务数据都是固定的,只能通过自己转换数据格式,并使用自己方式自己存储。
2. 广告的数据都生成了php文件数据缓存,没有压力。可以考虑放到memcache里去。
缓存方式:
1. 会员信息:redis缓存
2. 广告数据:php数据原始缓存
3. 处理后,根据每个依据条件得到的逻辑缓存
4. html缓存
瓶颈:
登陆弹窗,获取信息比较多,多个业务都是分开的,一个功能要去好几处的数据,所以使用了redis缓存
判断逻辑多,由于是个性化的,每个广告都要进行判断是否进行匹配,才给会员显示,所以后来加了逻辑缓存,以及html缓存。
项目后总结:
1. 一定要充分利用已有资源,减少自己开发压力,以及性能瓶颈
2. 优化不容易,每个小的点都有可能在大并发量下是致命的。
3. 项目最好能够在压力测试后才上线。
4. 需求一定要经过认真分析,自己能力是否可以达到才接,不要盲目的接需求。有时候,为了性能,可以牺牲一些需求。
5. 设计一定要充足才编码,不要盲目进行编码。
6. 写架构需要考虑很多东西,不然,很有可能导致全架构重写。
7. Oo编程,在php里面最好使用apc,如果文件引入多,可以减少4~6%的cpu
8. 缓存最好不要使用过期时间,如果使用过期时间就失去了缓存了意义了。但是用不用过期时间还是根据需求而定的。
9. 不要盲目用函数,我这次项目就存在盲目使用intval和trim的情况了,虽然说这两个函数开销不算大,但是对于大并发量来说,每个小细节都可能达到神奇效果。
最后讲讲php的几个架构优化(借用别人的思路):
1. 前端优化,减少http请求量,例如js,css,小图(使用yslow分析一下)
2. Mysql设计结构优化,语句逻辑优化,每句语句最好先explain一下,分析效率如何
3. Php程序逻辑优化
4. Html缓存,cms常用模式
5. 使用memcache、redis等缓存,并合理设计缓存结构
6. 使用php文件缓存,但需要注意io操作比较慢
7. Apc,xcache等编码缓存
8. 实在没有优化余力了,减少前端视觉等待(例如增加响应前时间或减少响应后时间)
最后感想:
这次项目优化大体上完成了;
总的来说,这次项目对我来说还是有点挑战,出了几次问题导致总监都怒了,但是幸好最后发现把问题发现并解决掉了,这点我深深地表达歉意。
然后这次也让自己成长了,明白了好多技术上的,项目上的,公司上的,自己从未接触过的东西,也把自己懵懂纯真的思想现实化,了解了很多无可奈何的现实。
这次项目改了3次,几乎是整个代码重构,对于我这种有点代码完美主义的,还是觉得很必要的,每次重构都是一种进步,这个也让自己学到很多,感谢yx。
- php广告系统优化感想
- paip.广告过滤系统 php 实现
- 针对Google AdWorks广告质量分数系统优化
- PHP系统性能优化原则
- 计算广告学习笔记 4.7竞价广告系统-逻辑回归优化方法介绍
- 广告系统
- 一键优化系统--集优化系统,屏蔽软件广告和恶意网站
- 总结下网站广告点击优化中的第三方权威性检测系统有哪些?网站广告点击优化
- 初学者之php 感想
- php学习感想
- JFSF系统感想
- 网站广告代码优化
- 网站优化之个人感想
- Unity之DrawCall优化感想
- php 广告加载类
- 广告发布管理系统
- 图形广告系统
- 广告系统术语
- python 内建比较函数详解
- Gstreamer实现摄像头的远程采集,udp传输,本地显示和保存为AVI文件 发送端
- JSP第三章知识点总结——JSTL EL
- java中各进制之间的转换(十进制转十六进制、十进制转二进制、二进制转十进制、二进制转十六进制)
- adb调试指定设备
- php广告系统优化感想
- 学习CxImage
- web前端开发应该知道的
- String类
- 学习bisect模块保持列表排序
- 状态机的两种写法
- busmouse.h 头文件分析 \linux-1.0\linux\include\linux\busmouse.h
- EntityManager的find()与getReference()的区别
- 折线分割平面 hdu2050 递推