Chinaunix

标题: 有奖讨论:Web性能优化:说说您的独门绝技~(获奖名单已公布-2014-5-28) [打印本页]

作者: cryboy2001    时间: 2014-05-06 14:59
标题: 有奖讨论:Web性能优化:说说您的独门绝技~(获奖名单已公布-2014-5-28)
获奖名单已公布,详情请看:http://bbs.chinaunix.net/thread-4140167-1-1.html

目前,我们确切知道,是有一个软件架构的使用人数达到了数十亿,与此同时还能保持其健壮性,个别组件的损坏并不会影响它的运行,它就是Web。Web是最大、使用最广泛、迄今为止人类所建造的拥有最健壮的信息检索功能的系统。
    Web的使用者达到如此之多,使用的对象(就是网页),也是非常非常的多,据统计:中国网页数量为1500亿个,CU就有17187044530 篇帖子(论坛主页最下面),所以使用者也是非常的挑剔,慢---关掉、颜色不好看---关掉、瞄一眼没感兴趣的---关掉、心情不好---关掉等等,面对如此多的内容,如此多的使用者,如此挑剔的用户,你的网站如何满足使用者的第一要求---快。


本期话题:Web性能
1、你的Web服务应用是用的什么架构,实现什么应用?(分别列出硬件与软件)
2、你对你的Web服务器做了针对哪方面的什么优化,效果如何(数据)?
3、怎样才能算的上是Web的高手(评价指标或方法),如何渐渐成为这样的高手?
4、同时讨论一下IT技术的广博与专精的关系。这也是很多人的困惑,因为找工作时对方的招聘要求写的超全面,但一看工资肯定招不到农民工,只能招大学生了。


本期奖品:
从精彩分享中,挑选5名,可获《Web性能权威指南》图书一本,
本书是ORELLY出品,由谷歌公司高性能团队核心成员的权威之作,堪称实战经验与规范解读完美结合的产物,您值得拥有!

活动时间:
2014年5月6日-5月25日



书名:High performance browser networking
原出版社: O'Reilly Media
作者: (加)Ilya Grigorik   
译者: 李松峰
丛书名: 图灵程序设计丛书
出版社:人民邮电出版社
ISBN:9787115349101
上架时间:2014-4-2
出版日期:2014 年5月
开本:16开
页码:317
版次:1-1



作者: beyondfly    时间: 2014-05-07 08:15
1、你的Web服务应用是用的什么架构,实现什么应用?(分别列出硬件与软件)
      硬件:浪潮英信NF5225    软件:apache  php  memcache   mysql
2、你对你的Web服务器做了针对哪方面的什么优化,效果如何(数据)?
      对web服务器做了memcache加速功能,调整mysql的默认参数,具体调整好的参数有点忘了,好像是单机一开始用ab压到2000多个访问每秒,调整后好像到了6000多
3、怎样才能算的上是Web的高手(评价指标或方法),如何渐渐成为这样的高手?
      高手都是来源于实战,历经无法的挑战,要成为高手,就必须经历各种各样的Web网站,比如,互联网的,金融行业的,传统行业的,技能上:要熟悉php的开发,mysql的开发
  与调优,存储的架构与优化等
4、同时讨论一下IT技术的广博与专精的关系。这也是很多人的困惑,因为找工作时对方的招聘要求写的超全面,但一看工资肯定招不到农民工,只能招大学生了
     我认为,首先是要基础扎实,不论是从事开发还是运维方面的工作,基础扎实是第一步。比如,对操作系统的原理清楚,熟悉操作系统的进程管理,内存管理,IO管理等,其次,对网络
熟悉,TCP/IP原理熟悉,理解过TCP/IP协议的三卷等,接下来,就需要在某一方面精通了,比如,做DBA的,要熟悉MySQL,oracle的安装配置,优化等,熟悉SQL语句的编写。做web开发的,要熟悉php,jsp等
作者: shang2010    时间: 2014-05-07 08:39
感觉web性能优化有很大的学问,但貌似只有大型互联网公司才有对应的价值吧,——当然不是民工价一个级别的
作者: craaazy123    时间: 2014-05-07 10:14
1、你的Web服务应用是用的什么架构,实现什么应用?(分别列出硬件与软件)
   服务器dell, nginx + tomcat + 自主设计分布式集群
2、你对你的Web服务器做了针对哪方面的什么优化,效果如何(数据)?
  我是做研发的,运维方面不是很熟,以下是我做过的一些优化:
  最简单的动静分离,nginx负责处理静态资源,tomcat负责处理动态资源;nginx同时也做负载均衡;gzip压缩(某个项目目测可以压缩至20%),自主的分布式集群比较复杂不方便透露。
3、怎样才能算的上是Web的高手(评价指标或方法),如何渐渐成为这样的高手?
  我觉得评价指标或方法一般是宕机次数,故障持续时长和能否应对突发的高负载吧。 我觉得高手是经验堆成的,这只有在工作中多学习多尝试多总结。
4、同时讨论一下IT技术的广博与专精的关系。这也是很多人的困惑,因为找工作时对方的招聘要求写的超全面,但一看工资肯定招不到农民工,只能招大学生了。
  现在很多招聘要求都是要会这个会那个,it行业东西多,应聘者要想获取更多的机会只能去学习各种工具,要做到某个方向专精还是不容易,除非你在某个方面是大牛,工作的话才不用担心太多。这个得招聘方想想了,你是需要一个打杂的呢,还是一个潜力股。
作者: forgaoqiang    时间: 2014-05-07 11:30
WEB性能就是和HTTP挂钩的,理解HTTP协议本身非常重要
作者: qingduo04    时间: 2014-05-07 14:15
路过,支持!!!
作者: jimmy-_-lixw    时间: 2014-05-07 14:17
本帖最后由 jimmy-_-lixw 于 2014-05-29 09:58 编辑

既然你忽略,我撤销内容!
作者: wenhq    时间: 2014-05-07 16:10
1、你的Web服务应用是用的什么架构,实现什么应用?(分别列出硬件与软件)
a.架构LVS+Keepalived-->nginx-->web app (resin,php)  .实现了文件上传下载,社交网络相关的。
b.硬件LVS,Nginx,web virtual machine base on KVM or openstack.
2、你对你的Web服务器做了针对哪方面的什么优化,效果如何(数据)?
a.web服务器针对业务,调整系统级的ulimits,tcp-keepalive,open port range etc.
b.调整业务级的resin,JVM 参数及GC算法,改进在大访问量下的垃圾回收机制。
c.调整文件作业的分区,有时候需要写大文件的话的有个临时目录。而且如果文件系统小了,很容易出现程序D状态。
e.用nginx替代apache。体现了高性能app的优势。
3、怎样才能算的上是Web的高手(评价指标或方法),如何渐渐成为这样的高手?
a.web 高手需要有经验的积累。
b. web 高手需要对app非常了解。
c.web高手要对业务逻辑要很懂。
4、同时讨论一下IT技术的广博与专精的关系。这也是很多人的困惑,因为找工作时对方的招聘要求写的超全面,但一看工资肯定招不到农民工,只能招大学生了。
a.运维技术的广度是必要的。
b.深度是以后发展的大方向。
c.有广度转向深度需要一定时间。
作者: wind_beyonder    时间: 2014-05-08 08:35
1、你的Web服务应用是用的什么架构,实现什么应用?(分别列出硬件与软件)
我的理解,现在智能嵌入式设备也可以对外提供Web服务,所以Web服务的性能优化要分通用服务器和微型服务器之分。
a.架构:Openwrt-->uhttpd/lighttpd-->LuCI+Web app
b.硬件:MIPS平台
2、你对你的Web服务器做了针对哪方面的什么优化,效果如何(数据)?
a.web服务器针对业务拓展模块,支持lua\cgi\tls\moniter等功能。
b.用单线程I/O复用的uhttpd,在有限资源的平台上,实现Web服务。
3、怎样才能算的上是Web的高手(评价指标或方法),如何渐渐成为这样的高手?
a.熟悉TCP\IP协议栈
b.  懂操作系统原理
c.  熟悉Web服务器开发模式(B/S)
d.  拥有服务器配置、管理、调优经验
4、同时讨论一下IT技术的广博与专精的关系。这也是很多人的困惑,因为找工作时对方的招聘要求写的超全面,但一看工资肯定招不到农民工,只能招大学生了。
a.可以考虑先精后广
b.找到兴趣点作为突破口,先精通某一项技能
c.寻找兴趣点相关项目,逐渐拓宽
作者: yuetwo    时间: 2014-05-08 09:12
cryboy2001 发表于 2014-05-06 14:59
目前,我们确切知道,是有一个软件架构的使用人数达到了数十亿,与此同时还能保持其健壮性,个别组件的 ...


1. 使用weblint或者其他HTML 检查工具来检查HTML内容是不是符合HTML 4.0规范,符合HTML 4.0规范的页面会加载的更快。

2. 最小化Javascript和Style Sheets的使用,Javascript是不标准HTML内容的最大来源,虽然实现了很多非常炫的效果但是却放缓了页面加载的时间,Style Sheets是需要在页面显示之前单独下载的,所以也会放缓页面的加载速度。

3. 关闭DNS的反向解析,DNS反向解析会记录客户端的计算机名而不仅仅是IP地址, 这样就增加消耗。

4. 使用统计工具来检查你的web系统的性能瓶颈是出在DNS,网络连接,内容大小或者是服务器端,这样就可以从瓶颈处着手提高性能。

5. 使用简单的servlet或者CGI, 在系统不需要的话使用分布式程序反而会减低性能。

6. 加内存, 跟我们使用的电脑一样,加内存往往是成本最低效果最好的提高性能的方法。要知道内存速度比硬盘速度要搞一个数量级的。

7. 合理的给你的数据库加索引,当根据关键字进行全表查询时,加索引会有效的提高查询性能。

8. 最小化数据库查询,如果能把数据缓存到中间层或者servlet的话,just do it, 数据库连接往往是系统的性能瓶颈。

9. 使用网络工具检查网络丢包和重发, 断断续续的系统性能问题一般是因为网络丢包或者干扰。因为丢包和重新发送数据之间有一个时间间隔,这样就会使系统变得缓慢。

10. 使用工具来实时监视网站的性能。
作者: yuetwo    时间: 2014-05-08 09:13
这里有篇CU网友的原创,值得大家一看

http://bbs.chinaunix.net/thread-497107-1-1.html
作者: dengbao2001    时间: 2014-05-08 13:35
占位围观学习下!
作者: hbsycw    时间: 2014-05-08 14:12
beyondfly 发表于 2014-05-07 08:15
1、你的Web服务应用是用的什么架构,实现什么应用?(分别列出硬件与软件)
      硬件:浪潮英信NF5225   ...



赞同,基础扎实最重要,万变不离其宗本!
作者: cryboy2001    时间: 2014-05-08 14:54
回复 3# shang2010


    我也认为,当你的服务器性能满足要求时,就不需要优化。
作者: GB_juno    时间: 2014-05-08 23:04
1、你的Web服务应用是用的什么架构,实现什么应用?(分别列出硬件与软件)
说一下目前手机app的架构:
nginx-前端web-服务端(node.js)-redis/mongodb-数据库

2、你对你的Web服务器做了针对哪方面的什么优化,效果如何(数据)?
因为web性能是个整体的东西,是最终数据:用户对站点的访问时间(从访问开始到刷新完毕)决定的
整体上来说对于前端,后端,部署架构整个体系架构都可以做优化。
比较大的一个改善是使用缓存机制,redis缓存刚刚的,能够提高很大的并发数。此外肯定会用到nginx的负载均衡的技术
另外前端的优化,这个一般都是前端的高手来做了,一般通过很多细节来尽可能让前端的刷新更快,包括压缩,图片处理,定义刷新时间,动态数据/静态数据的分开处理等等

3、怎样才能算的上是Web的高手(评价指标或方法),如何渐渐成为这样的高手?
这个web高手的话要看怎么定义web了...确实来说一方面是整个体系架构,包括技术的选型,部署方式-->这个是体系上的,另外就是代码上的,前后端也不一样。
后端要注重多线程并发,这样scale up就容易多了,前端就是要对http非常熟悉和了解。

4、同时讨论一下IT技术的广博与专精的关系。这也是很多人的困惑,因为找工作时对方的招聘要求写的超全面,但一看工资肯定招不到农民工,只能招大学生了。
IT是门工程吧,也不可能一蹴而就的,需要相当多的知识积累和沉淀。在大公司的好处是每个人处理一小个模块,能够让人专精一门,但是创业或者小公司很多人就得全栈了,什么都需要会。精通一门的基础上逐渐开始触摸其他领域会好一点,这样可以触类旁通。

作者: 流氓无产者    时间: 2014-05-09 09:31
就lvs和memcache吧,其他不懂
作者: timespace    时间: 2014-05-09 11:36
话题太庞大,尽量让自己的思维不发散

1、你的Web服务应用是用的什么架构,实现什么应用?(分别列出硬件与软件)

业务:社交媒体
硬件:定制x86 PC
软件:   LVS --> NGINX --> Apache(定制) --> 应用层load balancer & 配置Server(私有实现) --> 逻辑Server(私有实现) --> 数据层load balancer & 配置Server(私有实现) --> Memcached(定制) --> MySQL


2、你对你的Web服务器做了针对哪方面的什么优化,效果如何(数据)?

应该是Web服务而不是“Web服务器”吧,多数优化都是源于用户体验端---浏览器,1秒超时和3秒错误是一个基本指标,意味着页面的监控延时都必须控制在1秒内,常常会涉及从浏览器到数据库的全面审视。下面是几种明显提升效率的优化方式。

动静分离:分离静态文件(如图片和公共Javascript文件)到CDN,加大cache时间,所有动态请求一律采用AJAX方式,进一步分离页面结构,使浏览器并行下载Javascript。
读写分离:通常Web应用读远大于写,让Memcached和MySQL以此原则配置和部署,最大化cache效率。
有状态/无状态分离:无状态逻辑层才容易横向扩展和避免单点故障,比如用户登录态判断就是一种需要分离的状态。
热点/非热点分离:这是读写分离的进一步深化,重构数据层,分离出热点数据,大大节省cache存储和内网流量,进一步提升cache效率。

3、怎样才能算的上是Web的高手(评价指标或方法),如何渐渐成为这样的高手?

应该没有Web高手认证吧,很难说。总之,Web服务是一门实践者学问,保持好奇心不断尝试,终有“会当凌绝顶,一览众山小”。

4、同时讨论一下IT技术的广博与专精的关系。这也是很多人的困惑,因为找工作时对方的招聘要求写的超全面,但一看工资肯定招不到农民工,只能招大学生了。

IT技术日新月异,让很多人走进一些误区,澄清下:
1) 时间的积累容易成就广博,但未必能专精。专精必须有大量实践和深度思考,还要博采众长,意味着专精必然广博。不过它们又没什么先后顺序,早选择专精方向,任何成就的必要条件就是足够多的时间投入。
2) 招聘要求往往要求全才,其实多是唬人的,有过几次面试经历的人都清楚。关键在于你有什么特长或什么亮点,“一招鲜,吃遍天”任何地方都是适用的,不要求你有图灵奖的潜质,但起码应该有让人眼前一亮的技术或项目,而专精就是铸就自己核心竞争力的基础。想想杨过断臂之前,学了多少武功(全真/古墓/蛤蟆功/打狗棒...),金轮法王人品一般但武学造诣很高,指出杨过的短板“博而不精,杂而不纯”,后来杨过玩起神雕重剑,遇到什么对手,都是横劈竖砍,分分钟搞定。

作者: cryboy2001    时间: 2014-05-09 14:35
回复 11# yuetwo


    你好厉害,这么早的帖都被你找出来了。
作者: dgyyzy    时间: 2014-05-09 19:28
不错,非常有帮助。
作者: action08    时间: 2014-05-09 19:38
本帖最后由 action08 于 2014-05-09 19:46 编辑

书很不错哈,大牛的作品心得
作者: qianguozheng    时间: 2014-05-09 19:56
回复 9# wind_beyonder


    You are on Embeded Server, if I am right, you are working on WiFi Router.
作者: cryboy2001    时间: 2014-05-09 21:59
本帖最后由 cryboy2001 于 2014-05-09 22:00 编辑
流氓无产者 发表于 2014-05-09 09:31
就lvs和memcache吧,其他不懂


这已是linux中的高大上了,期待分享。
作者: fengzhanhai    时间: 2014-05-10 11:47
web层面的优化首先在架构上可以分为两层:
第一层、web前端即静态页面处理层;在第一个层面选择web代理服务插件,比如IHS、Nginx或者Apache等等此处插件不仅作为处理静态文件使用还用作热点数据的一级缓存使用,为了避免超级热点带来的性能瓶颈,在web前端我们使用varnish设置了二级缓存以此提供日均访问量亿万级别的pv访问。
第二层:APP层面即业务逻辑层;在业务逻辑层不仅需要调整中间件的各参数,还需要研发人员协助不断调整优化业务逻辑;通过dump、jvm监控工具、分析日志工具进行分析跟踪可能存在问题的地方、业务逻辑,然后有针对性的进行优化从而使单机并发吞吐保证在8K左右
为了提高web的吞吐性能其他需要关注和优化的地方:1、根据业务性质合理规划内网及出口网络容量;2、OS级别参数按照web业务规范调整;3、对整个系统设计可落地的并发控制开关,在服务超限时可屏蔽后来请求服务的用户或者对其排队并给出友好提醒,防止雪崩~ 以上为个人拙见,仅供参考
作者: cqb0202    时间: 2014-05-10 12:51

1、你的Web服务应用是用的什么架构,实现什么应用?(分别列出硬件与软件)
   a、服务器dell, nginx + Apache + PHP
   b、DNS做智能解析 -> Nginx 做前端负载  ->  Apache做后端
2、你对你的Web服务器做了针对哪方面的什么优化,效果如何(数据)?
    a、静态资源全部上CDN,
        b、缓存 eaccelerator PHP加速的缓存,memcached 数据缓存
       
3、怎样才能算的上是Web的高手(评价指标或方法),如何渐渐成为这样的高手?
   a、熟悉服务器的维护、调优、配置的经验
   b、熟悉各种前端、后端技术,熟悉整个构架的瓶颈
4、同时讨论一下IT技术的广博与专精的关系。这也是很多人的困惑,因为找工作时对方的招聘要求写的超全面,但一看工资肯定招不到农民工,只能招大学生了。
   做运维本身就要求会很多:开发(运维脚本)、配置各种服务、优化服务器、网络、数据库等,
作者: chenzhiquan2000    时间: 2014-05-10 21:03
提示: 作者被禁止或删除 内容自动屏蔽
作者: fire_cpp    时间: 2014-05-10 22:04
本帖最后由 fire_cpp 于 2014-05-10 22:07 编辑

1、你的Web服务应用是用的什么架构,实现什么应用?(分别列出硬件与软件)
部分使用的是云服务器(WEB/DB/CACHE),部分使用的是服务器托管(敏感数据、关键数据备份、CPU密集应用)。目前看来,大厂商的云服务器还是靠谱的。
整体架构是很大路货了:负载均衡(nginx)-CACHE(memcached/varnish)-WEB应用(apache)-专用计算服务器-数据库(PG),使用的基本都是开源方案,python流。

2、你对你的Web服务器做了针对哪方面的什么优化,效果如何(数据)?
我们的是计算密集型应用,针对这方面的优化较多。说是优化,其实就是些参数调整和加入队列服务,无需太多榨取服务器资源,你得应付高峰不是?这里说下,其实NGINX在计算密集型应用、动态网页应用中并没有比APACHE优秀,我们就有使用APACHE的PREFORK模式,进程模式更稳定。没有对比数据,但在连续十几小时的接近满载计算量下整个系统从未崩溃过(确切地说是计算服务器满载)。

3、怎样才能算的上是Web的高手(评价指标或方法),如何渐渐成为这样的高手?
精通协议原理,精通所用工具的内在原理,精通OS原理,一通百通。
无他,学习+实践。

4、同时讨论一下IT技术的广博与专精的关系。这也是很多人的困惑,因为找工作时对方的招聘要求写的超全面,但一看工资肯定招不到农民工,只能招大学生了。
僻千山之才而为一台,没有广阔的视野难以成为大师,但也要避免广而不精,做T字形人才是王道。那些招聘不用理,什么都要求的要么表明HR是外行,要么表明公司是个民工集中营,忽略吧。
作者: shang2010    时间: 2014-05-11 16:05
4、同时讨论一下IT技术的广博与专精的关系。这也是很多人的困惑,因为找工作时对方的招聘要求写的超全面,但一看工资肯定招不到农民工,只能招大学生了。
僻千山之才而为一台,没有广阔的视野难以成为大师,但也要避免广而不精,做T字形人才是王道。那些招聘不用理,什么都要求的要么表明HR是外行,要么表明公司是个民工集中营,忽略吧。
作者: cryboy2001    时间: 2014-05-12 07:59
beyondfly 发表于 2014-05-07 08:15
    我认为,首先是要基础扎实,不论是从事开发还是运维方面的工作,基础扎实是第一步。比如,对操作系统的原理清楚,熟悉操作系统的进程管理,内存管理,IO管理等,其次,对网络 熟悉,TCP/IP原理熟悉,理解过TCP/IP协议的三卷等,   ...


    有道理,但是这些在大学里都有学过的,但毕业后又有几人真的学懂了呢?到上了社会又有多少人拿起这些书再来看看,并应用到实践呢?
现在流传的一些批评大学教育的言论,“大学里学不到东西”“大学里学的东西都是过时的”“大学里学的东西在社会上没用”,造就了现在的大学生60分万岁,61分浪费的观念。如果一门学科一学期下来,考60后,就再也不去看他了,基本与没学差不多,几年后,怀疑连2进制、10进制、16进制换算都要想半天了。
作者: yuetwo    时间: 2014-05-12 14:13
cryboy2001 发表于 2014-05-09 14:35
回复 11# yuetwo


CU现在有价值的原创不错了,但是之前有很多不错的内容,虽然东西老了些,但是思想和思路还是很值得学习的
作者: yuetwo    时间: 2014-05-12 14:14
timespace 发表于 2014-05-09 11:36
话题太庞大,尽量让自己的思维不发散

1、你的Web服务应用是用的什么架构,实现什么应用?(分别列出硬 ...


学习了,兄弟这个是正宗的少林功夫啊,一板一眼的,像我这样的野路子选手,搞不来
作者: yuetwo    时间: 2014-05-12 14:17
qianguozheng 发表于 2014-05-09 19:56
回复 9# wind_beyonder


都是英文啊,现在做无线路由器的创业者不要太多啊,出了一个带有家庭服务器功能的小米路由器,接下来估计华为、360这些厂商估计会纷纷跟进的
作者: vallrock    时间: 2014-05-12 15:04
做嵌入式的,对WEB说不上太多,不过对知识的广博和专精有一点认识。有时候这两方面看起来很矛盾,有时候又不然。当你在某一方面已经做得还可以了之后,如果你一直钻研这个可能突破不了一些瓶颈,这时候,多涉猎一些别的东西,反而容易得到启发,广博促进了专精,这里看来两个又是关系密切的。
作者: beyondfly    时间: 2014-05-12 21:39
回复 29# cryboy2001


    最近在看吴军博士的《数学之美》,书中说了很多高数知识在谷歌搜索中的应用,比如矩阵、余弦定理等。大学所学的知识不是没有用处,而是要到了一定的程度以及在特定的领域才能用到。比如,学习了操作系统原理,如果进行了微软,intel这样的公司从事核心开发,那肯定要用到,如学习TCP/IP的实现,到了路由器公司,那一定可以得到很好的应用 .
作者: typuc    时间: 2014-05-12 22:50
1、你的Web服务应用是用的什么架构,实现什么应用?(分别列出硬件与软件)
      dnspod,电信主站,联通+移动机房nginx(keepalived)代理同时做缓存。主站采用juniper防火墙nsrp,核心cisco交换机hsrp,服务器双网卡bond。lvs(piranha)+haproxy实现不同级别代理,nginx做的web服务器。服务器都是dell的,R210做负载,R410做应用服务器,R610数据库
2、你对你的Web服务器做了针对哪方面的什么优化,效果如何(数据)?
      修改内核参数,tomcat, jvm参数调优,cacti自定义插件监控jvm各个区域使用率,服务器资源使用。
3、怎样才能算的上是Web的高手(评价指标或方法),如何渐渐成为这样的高手?
     熟悉常用技术,并为现有业务选择最合适的技术架构;找出系统瓶颈,明白出瓶颈的根本的原因,不断优化;对应突发故障有良好的思路。基本服务搭建,业务流程熟悉,监控完善,系统原理,多多实践,并能验证自己各种奇葩的想法。

4、同时讨论一下IT技术的广博与专精的关系。这也是很多人的困惑,因为找工作时对方的招聘要求写的超全面,但一看工资肯定招不到农民工,只能招大学生了。
     首先是广博然后是专精,广博是专精必须经历的过程(量变到质变,类似于美剧《格雷》里的实习医生,首先在各个科室学习,1-2年后根据自己的优势和爱好再转为专科医生)。很多问题都是在访问量大的时候才凸显出来,这个就要求对各个系统模块的熟悉,对原理的深入了解再进行处理。招聘其实都是都是HR到处copy的,去年到现在也面试了一些来应聘的人,感觉你简历越写的越多HR越容易看中。对于新人我的观点是:会日常系统服务搭建,会简单shell就ok了,满足以上两点基本来就能开展工作。
   
作者: cryboy2001    时间: 2014-05-13 08:26
shang2010 发表于 2014-05-07 08:39
感觉web性能优化有很大的学问,但貌似只有大型互联网公司才有对应的价值吧,——当然不是民工价一个级别的


有实际应用的都是高手,还没有实际应用的,就要学习,为实际应用做好准备,成为高手,前面很多牛人的回答已足够为我们指路了。
作者: Purple_Grape    时间: 2014-05-13 10:00
本帖最后由 Purple_Grape 于 2014-05-13 10:05 编辑

是否需要优化,这完全是个哲学命题。

web加速,个人经验,总结为几个词:分布式、缓存、压缩 。

细节太多太多,,,,,,

终于有一天,我感觉自己是徒劳,因为原来的东西早已经能够满足需求。
作者: cryboy2001    时间: 2014-05-14 11:05
Purple_Grape 发表于 2014-05-13 10:00
终于有一天,我感觉自己是徒劳,因为原来的东西早已经能够满足需求。


    这就是高手形成的过程,高手都是一招制敌,但要达到真正的一招制敌,就要经过辛苦的历练。
作者: uxyzp    时间: 2014-05-18 18:16
有点全栈的意味……
作者: yunas    时间: 2014-05-23 19:25
占位围观学习下!
作者: Darleter    时间: 2014-05-23 21:54
没啥秘籍:一个字 “拆”

作者: cryboy2001    时间: 2014-05-26 08:42
Darleter 发表于 2014-05-23 21:54
没啥秘籍:一个字 “拆”



“拆”如何理解。

作者: Darleter    时间: 2014-05-27 10:10
cryboy2001 发表于 2014-05-26 08:42
“拆”如何理解。


和这里绝大部分同行的理解可能都不一致。
主要拆的方式:
从业务上入手进行拆分,比如前台页面,和后台就可以明显的拆分成不同的入口,针对不同的业务特性采用不同的系统架构设计,这部分主要解决业务之间的相互影响。
另外一个拆主要针对数据,水平拆库同样需要很强的业务支撑。
拆后的目的主要支持业务能水平扩展,相互之间的影响要降低。

从技术上来说:
主要满足业务池的快速缩减增加。
中间数据缓存降低数据库压力的同时,需要满足相互不受影响。
数据层面需要满足,查询和写入在不同库上。

然后为了满足以上需求,干活!




作者: tomtesla    时间: 2014-06-13 16:24
关于web性能优化,结合我自身的项目经历,简单总结一下:


1.  DNS优化
     第一次网页浏览会加载各种资源,发出很多动态请求,从输入地址框DNS解析主域名就要开始优化了,好的或者说企业级的DNS提供商可以大大缩短各个地域的本域名dns解析时间。貌似html5 还有一些浏览器支持dns 预加载的东西,可以加速网页其他资源域名解析速度。

2. CDN & BDN
    总的特点是横向负载,CDN 内容负载一些静态请求,BDN业务负载一些动态请求。
    关于CDN的工作方式,
       A需要向CDN服务器单独上传静态资源.
       B.CDN server 主动向后端主站发请求,会缓存静态请求,对于这种情况后端主站可以有单独的图片服务器,或者用nginx的 proxy_cache  或者squid 功能做一个后端的静态缓存,降低后端服务器IO和部分网络负载。
    CDN 可以自建或者购买CDN服务,甚至可以只是同一台主机,同一个域名的别名,其效果就是充分利用浏览器可以为单个域名同时并发6个请求的限制,比如搞几个img0.xx.com img1.xxx.com  css.xx.com js.xxx.com 等等 ,此种情况最好结合DNS优化,效果会更好。
   
     关于BDN的工作原理和效果跟CDN类似,由于动态请求涉及业务逻辑,比如用户各种状态,session,数据共享等等,如果采用多这个集群还要考虑消息队列机制来保持数据一致性,所以实现起来相对复杂一些,但是对于大型应用比如淘宝规模的,BDN负载还是很必要的。

  3. BigPipe & 各种前端技术
      首先保证,静态资源Etag,保证静态资源不需要重复加载。建议在1和2优化的基础上,因为3的优化影响到前端业务实现的方式,程序开发工作量大,如果是起初就在3的基础上做还可以,否则已经成型的网站最后单独做3的优化时,面临各种业务测试任务。
     优化要点包括:
      1.分拆业务到ajax请求,json请求+js模板函数更佳
      2.css 优化减小css体积, 将css调用的样式图片整合到1张图片减少请求数,或者只加载页面所需的css样式
      3.js 优化减小js文件调用以及体积,只加载所需的js
      4.页面输出流采用bigpipe模式,不需要等整个页面在后台跑完,再输出给前端,这样很多已完成部分渲染的静态资源可以提前加载,而不是等到整个页面输出完之后。

4.后端服务优化
    1.负载 均衡
         请求层server本身通过增加节点来负载,比如多搭建几个lnmp,或者lamp节点来做前端load balancer的负载
        数据读写层DB比如mysql,本身支持负载比如master/slave 或者cluster集群负载,还有一些nosql的比如mongodb, redis,memcache,couchbase都支持集群负载,一般用过haproxy来做负载均衡器。
   2.业务优化
      比如大型DB需要分拆表,甚至可以分拆表到不同的server像淘宝。在合适的地方使用高速缓存比如memcache,redis等等,尽可能减少数据层的读写。
     还有就是比如我是php程序员,所涉及也是php的web编程比较多,但有些业务可能php本身不擅长,所以可以考虑采用其他语言来实现,比如nodejs的异步IO特性,用来做实时消息队列,python已存在各种高效库用起来,要比php重写的类似功能用起来估计更稳定高效。业务层的深入优化需要根据详细的业务本身来定制,这已经超出了web性能优化的范畴。

我能想到的就这四点,还请高手指教。 :)
        
      
   
作者: o2414834    时间: 2014-09-07 13:54
cqb0202 发表于 2014-05-10 12:51
1、你的Web服务应用是用的什么架构,实现什么应用?(分别列出硬件与软件)
   a、服务器dell, nginx +  ...


楼主写的很好楼主写的很好楼主写的很好
作者: o2414834    时间: 2014-09-07 13:59
fire_cpp 发表于 2014-05-10 22:04
1、你的Web服务应用是用的什么架构,实现什么应用?(分别列出硬件与软件)
部分使用的是云服务器(WEB/DB ...


感谢楼主分享感谢楼主分享
作者: xiangys0134    时间: 2014-09-16 22:34

作者: thy_shenzhen    时间: 2015-03-08 21:22
我觉得全栈工程师不可能全部都很熟悉,尤其是调优方面。

调优很吃经验的,但是前提是要对各种理论理解的相当深刻,并有一定的经验。
作者: 吴四爷    时间: 2015-03-25 16:55
貌似很牛B,貌似很强大
作者: Mrzacus    时间: 2015-04-24 14:20
占座围观学习各位大神的经验
作者: athenaansan    时间: 2015-04-26 11:27
我来支持楼主!好贴收藏!
作者: archermind_wh    时间: 2015-12-22 10:50
需要武汉的工作的举爪
作者: 520alex    时间: 2016-06-29 17:59
香港直接机房服务器租用--
香港IDC葵芳中心机房直连中国电信(香港)、香港CN2线路,BGP包括PCCW 九仓 新世界 宽频 和记等!24小时技术值班,24小时技术工单响应,自主机房,具备完全可控的技术条件!可以满足客户任何技术需求!详情了解请直接加一下QQ 2978689393电话18666828617 24小时在线 机房24小时技术值班 可以提供测试机





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2