文档章节

运维力挺PHP完爆Java

netkiller-
 netkiller-
发布于 2015/10/12 18:43
字数 1784
阅读 6847
收藏 68

运维力挺PHP完爆Java

运维力挺PHP完爆Java,同时PHP是世界上最好的语言没有之一!!!

  1. 半夜爬起来重启Tomcat有什么?

  2. 凌晨升级有没有?占用周末私人时间升级有没有?

  3. 空指针抛出异常崩溃有没有?

  4. 出现异常,一直解决不了有没有?

  5. 只能通过重启让系统苟延残喘的运行有没有?

  6. 抛出异常系统崩溃,业务暂停,被老板吊一顿有没有?运维背黑锅有没有?

  7. 程序问题老板会让开发处理,但会扣你一个运维反应不及时。

  8. 运维要派专人每天开发下载日志文件有没有?

  9. Tomcat不敢用vhost(虚拟机)有没有,使用虚拟机一个系统崩溃全死有没有?

  10. 不能使用虚机机只能多个实例运行有没有?多个实例要开一堆端口有没有?

  11. jsp页面被植入恶意代码有没有?

  12. 数据库链接池出问题有没有?

  13. 服务器监控一个晚上都在报警有没有?

  14. 配置文件搞死人有没有?

从运维角度,运维PHP项目远比Java来的轻松。 而Java网站就要非常费神,你要做好7*24小时待命,手机常开,准备随时重启,随时为开发提供日志,很多开发解决不了的问题,推给运维。 本汪目前为你还没有见过一个稳定健壮的Java程序。什么是稳定健壮的程序,能做到零错误,异常异常抛出,能够长时间稳定运行,不要半夜出事。

Web 运维

PHP Web解决方案主流有两种,一种是 Apache + mod_php 搭档,另一准是fastcgi系的php-fpm 通常跟 Nginx 搭档。

mod_php 与 php-fpm 无论哪种方案,健壮性,稳定性都远远超过Tomcat + Servlet。

理论上 Servlet 应该速度上好于 mod_php 跟 php-fpm。但实际情况并没有很突出,因为系统瓶颈不在应用服务器,而是数据库。

两个WEB解决方案都能通过负载均衡,横向扩展解决应用服务器压力问题。

mod_php 与 php-fpm 原理是一次请求,运行完毕便释放OS资源。无论程序有多烂都能正常运行完,某个功能模块出现问题,其他仍能正常使用。

Servlet 启动后全部载入内存,程序写的不够好,就容易崩溃。一崩溃就是出大事,连首页都进不去,这个矛头都会指向运维。

本地应用运维

什么是本地应用程序,说白了就是在命令行运行的应用。这些应用通常是定时运行,守护进程运行。

大部分Java开发者在Windows上使用Eclipse或者NetBeans一类的集成IDE开发,然后在IDE中编译好后交给运维,通常给过来的程序都运行有问题。

都说Java是跨平台,实际上不同平台之间还是有很大差异的。Java 实质上是夸VM,而无法做到跨平台。如果某个平台上面没有JVM,Java是无法跨过去的。

由于大部分Java开发者使用IDE开发,不涉及命令行处理,只需在IDE集成开发环境中点两个按钮Run跟Build即可,一旦离开IDE无从下手,不清楚在Linux上怎么搞。 我认为Ant,Ivy,Maven 应该是必须掌握的,时至今日很多Java开发者还没有听过Ant。

PHP开发者对linux命令的熟悉程度好于Java开发者,无用操心。Java吗至少陪着搞。

Java 不能访问底层,Jre 是运行在OS之上,守护进程实现起来需要写一个shell,实现启动,提取pid,pid写入文件,记录日志,进入后台运行,停止退出等等功能,这个脚本Java开发者通常搞不定。

PHP 能够调用 pcntl 写出完美守护进程。

本地应用程序一定会涉及多线程,PHP初级程序员培训后就可以写出质量不错的多线程程序,而Java中级软件工程师都未必写出同样质量的程序。 PHP的pcntl + pthreads + libevent 比 Java Thread + NIO 门槛低,学习成本低,上手快,更容易开发出高效稳定的应用程序。

配置复杂度

Java 不敢采用vhost模式运行,而是采用多个实例的方案,是为了降低崩溃后影响的面积,以及升级过程中停机的影响。 多实例问题来了,本可能高内聚的程序,多实例后项目之间产生了通信成本,每个项目部署后都携带大量的配置文件,配置起来十分繁琐,出现问题需要逐一排查。

这也是为什么Java项目一旦出现问题,排查耗时的原因。

安全性

很多人认为Java是编译运行,就安全了,这是大错特错的,实际情况Java网站攻击的机会与漏洞数量一点也不比PHP网站少。

被注入有没有?,被脱库有没有?

现在黑客已经很少搞破坏性攻击了,而更多的手法通常是控制肉鸡,获取有价值的数据。从外围寻找业务漏洞的方式来的更直接有效。

另外无论是Java还是PHP,很多开发人员都拒绝升级,因为每次升级都会扯出很多陈年BUG,谁都不想决解,承担责任。

很多版本厂家已经不在提供技术支持跟后续升级更新,一旦该版本出现漏洞,后果很严重,大家都心知肚明。

神马 PHP 5.2.17, JDK 1.5, Tomcat 5 都是坑,出了问题害的运维背黑锅。

总结

Java 运维应盯紧日志,Java 项目崩溃不是偶然的,是各种抛出异常积累结果。 对于Java项目,重启是万能的,通过脚本监控发现异常就重启,不要试图找出问题的根源,因为日志你永远看不懂,保证业务最重要,随后丢一份日志给开发人员,同时告知老板。

从运维角度看,使用什么语言并不重要,安全,稳定,健壮这才是王道。语言的各种不足可以从架构上,部署上,设计上弥补。

没有一种语言是全能的,每种语言在设计的时候都是针对某个领域或者倾向于解决某领域而设计的。

上面所提的很多问题并不全是语言的问题,可能是容器问题,可能是虚拟机问题。对于运维并不关心这些细节,很多人无法分清楚什么事语言,什么是编译器,什么事虚拟机,我们只看结果。


关注下面二维码是我的公众号。

© 著作权归作者所有

共有 人打赏支持
上一篇: 谈DELL收购EMC
netkiller-

netkiller-

粉丝 694
博文 264
码字总数 368425
作品 10
深圳
部门经理
私信 提问
加载中

评论(63)

nonkr
nonkr
一看到题目,我就来看评论了
绝望生鱼片
绝望生鱼片
呵呵
lgscofield
lgscofield
呵呵呵呵呵,不是java不好,是你没回用,现在大数据这么火,你用PHP搞一个呗
xtgss007
xtgss007

引用来自“xdev”的评论

引用来自“开源中国首席骨科主任”的评论

本地应用程序一定会涉及多线程,PHP初级程序员培训后就可以写出质量不错的多线程程序
楼主你确定吗? 培训出来的人,能够真正写PHP多线程的有多少个?他们知道线程和进程的区别吗?

什么时候php可以多线程?求科普
好像有一个叫swoole的
牛奋-南京

引用来自“xiaolei123”的评论

然而为什么安卓不使用PHP而采用Java+C++作为开发语言呢?你说这么多 其实就只说了一点“PHP比Java简单”。

H
巴拉迪维
巴拉迪维
真是找骂
钱钱磊
钱钱磊
写软文 赚粉丝
纠结名字
怎么这么多不要脸的PHP推广者,为了一点点击率,什么话都敢说。我怎么不见Java布道者推广Java的时候踩PHP?
纠结名字
PHP选手惯用手段:踩着别人往高站。总是拿几个PHP大牛的代码跟Java菜鸟的代码比,典型的田忌赛马策略。不提Java,你们还能把PHP说出花吗?但是PHP跟Java是一个档次吗?
ramnight
ramnight
这是来找骂的....
为什么很多公司要求运维会JAVA ?

大家好,这个问题大概也不太算问题了,不过着实也困扰了我好久了。 经常看到很多公司在招运维的时候,要求会JAVA开发,我就奇怪了。 IT也好 运维也好,会写shell ,可能还需要会一些php 也许...

蔚蓝一片
2012/07/17
5.3K
13
请e神不要再对Java品头论足,除非……

除非你把你的言论,用搜索+替换,把java替换成c,然后通读一遍。如果你觉得这句话其实和c无关,那么请再发出来。 如: e神:连var_dump和isset这些功能都没有的Java确实够蛋疼的 替换:连var...

乌龟壳
2016/09/17
1K
19
求大神解答,大型网站 PHP 框架如何选择? PHP 未来的发展趋势?接口框架选择?数据操作类选择?

1.PHP开发大型网站用什么框架好呢?YII2?Symfony2?还是其他什么框架,求指引 2.PHP未来的发展趋势是怎样的呢?PC端网页开发?给APP和m端做接口?还是微信的相关开发?,求指引 3.PHP用来开发...

jack984
2015/04/11
1K
17
[招聘] 淘宝[急招]应用运维工程师(工作点: 杭州/北京)

详细招聘要求请查看 http://job.taobao.com 校园招聘需求请查看 http://campus.taobao.com 淘宝[急招]运维工程师(工作点: 杭州/北京) 目前社会招聘需求:年薪 10-20万 岗位名称:应用运维工程...

zhengshanda
2011/04/11
1K
3
兼职

坐标 上海 熟悉Linux window 熟悉java spring mvc dubbo hibernate struts1 struts2 servlet 熟悉php kohana CI 框架 跪求运维或者开发兼职 thanks 6年java...

13123123
2016/03/09
894
6

没有更多内容

加载失败,请刷新页面

加载更多

python精简笔记-[5]-列表[list]

1

平头哥-Enjoystudy
31分钟前
1
0
《如何做好一场技术演讲》笔记

[TOC] 1. 精心准备 1.1. 明确演讲主题 如同架构设计一样,了解需求永远是第一位的,任何脱离需求的架构设计都是耍流氓。 想要开始演讲,首先需要了解听众的诉求,确认下面这些问题: 听众组成...

whoru
34分钟前
3
0
Oracle学习日志-4(查询基础)

首先新建一张Product表格。数据如下 语法 从表名中查询希望查询出的列的名字 SELECT <列名> FROM <表名> 例如从Product表中查询商品编号,商品名称和进货单价三列。 SELECT product_id,prod...

白话
34分钟前
2
0
【重大更新】跨平台移动开发框架Altova MobileTogether v5.0发布

MobileTogether是一款对应用程序进行精心渲染的跨平台移动开发框架,从所处设备到外形因素再到屏幕方向,很大程度的为开发人员和终端用户提供了更好的功能性与灵活性。MobileTogether包括: ...

ymy_666666
43分钟前
1
0
better-scroll的使用

目的:需要在手机端实现上拉加载数据,下拉刷新页面的功能。 使用的控件:better-scroll 难点:目前的better-scroll都是和vue一起使用,公司用的是angularjs1.x,所以需要最原始的使用然后封...

Pcat
46分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部