免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 无风之谷

专家座谈——Web开发中你所遇到的性能问题(大奖) [复制链接]

论坛徽章:
10
CU大牛徽章
日期:2013-09-18 15:20:48程序设计版块每日发帖之星
日期:2016-07-21 06:20:00IT运维版块每日发帖之星
日期:2015-07-30 09:40:01技术图书徽章
日期:2014-10-14 16:00:43天蝎座
日期:2013-09-27 17:41:29CU大牛徽章
日期:2013-09-18 15:21:17CU大牛徽章
日期:2013-09-18 15:21:12CU大牛徽章
日期:2013-09-18 15:21:06CU大牛徽章
日期:2013-09-18 15:20:58每日论坛发贴之星
日期:2016-07-21 06:20:00
发表于 2011-09-12 09:27 |显示全部楼层
回复  emperor


    解释型语言和它的解释器并不一是web性能瓶颈的主要因素, 我们可以参考fackbook怎 ...
coolesting 发表于 2011-09-11 10:48



    一般的企业,只有一台服务器,既是DB服务器,又是WEB服务器,甚至这只是一个VPS,或仅仅是虚拟主机。
  在这样的情况下, 解释型语言和它的解释器一定是web性能瓶颈的主要因素

论坛徽章:
0
发表于 2011-09-12 16:04 |显示全部楼层
欢迎大家多多参予~!

论坛徽章:
0
发表于 2011-09-12 22:29 |显示全部楼层
一般的企业,只有一台服务器,既是DB服务器,又是WEB服务器,甚至这只是一个VPS,或仅仅是虚拟主 ...
tomac_cu 发表于 2011-09-12 09:27



    如果这个企业对网络上的经营只投入一台服务器,
    那么他也会不愿意高薪长期顾用一个高级程序員去帮他的WEB应用软件进行优化和维护,

    唯一极限的优化就是静态化, 这样达到单台服务器最极限的性能,
    他用的动态语言无论是什么都几乎不会成为拖累。

论坛徽章:
0
发表于 2011-09-12 23:33 |显示全部楼层
回复 11# 七夜


    七夜,分享下你的案例嘛

论坛徽章:
10
CU大牛徽章
日期:2013-09-18 15:20:48程序设计版块每日发帖之星
日期:2016-07-21 06:20:00IT运维版块每日发帖之星
日期:2015-07-30 09:40:01技术图书徽章
日期:2014-10-14 16:00:43天蝎座
日期:2013-09-27 17:41:29CU大牛徽章
日期:2013-09-18 15:21:17CU大牛徽章
日期:2013-09-18 15:21:12CU大牛徽章
日期:2013-09-18 15:21:06CU大牛徽章
日期:2013-09-18 15:20:58每日论坛发贴之星
日期:2016-07-21 06:20:00
发表于 2011-09-13 08:38 |显示全部楼层
如果这个企业对网络上的经营只投入一台服务器,
    那么他也会不愿意高薪长期顾用一个高级程序 ...
coolesting 发表于 2011-09-12 22:29



    是最终用户只能投一台服务器,所以才有这么多的静态优化

论坛徽章:
0
发表于 2011-09-13 12:22 |显示全部楼层
1,初学者怎么入门Web开发?

我已经久未开发web了。当今主流的web开发环境,无非是php、.Net、Java,我认为对于缺乏编程经验的初学者来说,PHP很合适。PHP跟Perl很像(最早的PHP是用Perl开发的?),是面向过程的语言,通过简单的函数调用,就完成大部分的web和数据库处理。作为Perl版主,虽然我更喜欢其他web编程语言如Ruby,但是我仍然推荐PHP。它天生是一门web语言,与数据库结合紧密,并且容易上手,能快速完成工作,这就可以了。


2,你选哪种Web开发技术,JEE、PHP、.Net、RoR、Django......?,依据是什么?

我之前一直用Perl/Mod_perl开发WEB。Perl web开发在国内甚少,但在美国和欧洲,还是很多。互联网早期的动态网页,都使用Perl CGI开发。CGI并不代表过时的技术,国内的QQMail和俄罗斯的Mail.ru,他们的webmail都使用CGI技术(当然,不一定是Perl CGI),每天支撑数千万的动态访问。Perl开发CGI的好处也是容易上手,掌握Perl和HTTP的基础知识,再看下CGI这个模块的文档,就可以写网站了。另外CGI和Template::Toolkit结合,可以让HTML代码与perl代码彻底分离,从而让web开发员与UI设计师都很舒服。

对于性能要求高的网站,我们使用Mod_perl。mod_perl将perl解释器编译进Apache,这样每个apache进程启动时,就启动了一个perl解释器。然后,perl解释器从磁盘加载代码并编译,只要这个apache进程不退出,这些代码就都在内存驻留,避免了启动解释器、加载文件、编译等一系列开销,使程序运行速度很快。mod_perl还有个好处是可以直接访问Apache的内部API,这非常方便,我们可定制apache处理器,来实现一些特殊功能的处理,如输入输出前的过滤和访问控制。


3,如果你是一名Web开发者,请把你在Web开发中遇到的性能问题跟大家做个分享。

之前参与开发过一些较大的web系统,基本架构是:应用服务器Apache/Mod_perl,数据库服务器Mysql,反向代理服务器Nginx,数据库连接池Apache::DBI,数据缓存Memcache。

Apache和mod_perl是重型应用服务器,它们处理动态web请求,比如查询数据库、计算结果并返回。apache/mod_perl一般都是prefork运行,这样由apache直接面对客户端,会有很多不利因素。例如一个客户请求就要fork一个进程,并且慢客户端会导致进程吊起,浪费资源,因此通常在apache前端使用Nginx反向代理。Ngninx是事件驱动型的轻量级web服务器,它一方面可以承担更高并发、处理慢客户端连接,另一方面处理静态文件更快(当然,nginx不能完全代替modperl或java的应用服务器,我之前专门写过一篇帖子)。

除了web服务器外,与性能关系更为紧密的就是数据库。除了优化SQL查询、设计分库分表外,我们还可以使用Apache::DBI来保持长连接,避免程序每次与数据库建立连接的开销。还有Memcache也可以用得上(memcached是一种内存型的key/value数据库,我在CU很早前写过一篇帖子介绍memcache及其perl API),把查询量大、更新不频繁的内容放在memcache里,可以大大减轻数据库的压力。还有其他一些NoSQL技术如MongoDB、TTServer、Cassandra等,也可以作为关系型数据库的补充,这些我都测试过,但没正式应用过,不多述。

论坛徽章:
0
发表于 2011-09-14 15:29 |显示全部楼层
To 36 楼
“把查询量大、更新频繁的内容放在memcache里” ? 是不是多了个字

论坛徽章:
0
发表于 2011-09-14 15:58 |显示全部楼层
To 36 楼
“把查询量大、更新不频繁的内容放在memcache里” ? 是不是多了个字
coolesting 发表于 2011-09-14 15:29



    看怎么用。把读分离出来放memcache没什么不可以。

论坛徽章:
0
发表于 2011-09-14 21:29 |显示全部楼层
    如果mysql 打开连接 即便是数据取用完成也不关闭 那样的代码简直就是灾难


我觉得persistent link可以避免反复建立和销毁连接的开销,能提高性能。
不准备复用的连接,用完了也不关闭,没人会这么做吧。

论坛徽章:
0
发表于 2011-09-14 21:45 |显示全部楼层
前面有人提到,python处理中文有些搞,其实还好,
decode和encode方法,初学的时候可能会一头雾水,
理解了就觉得很优雅,很多知名的库都有类似设计,
例如C++的QT库,苹果objc的NSData和NSString.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP