php怎么设置新进程,FPM运行状态的实时查看及监控详解?
简单处理的话,大概可以从三个方面来优化:
一、代码缓存:使用 Zend Opache、apcu 来缓存代码和对象。各参数在 /etc/php5/fpm/conf.d 下面可调。
二、页面缓存:使用 nginx 自带的 fastcgi cache 缓存页面。三、调整 php-fpm 的参数。如 php.ini、php-fpm.ini pool.d/ 目录下各参数的优化。你的内存有64G 的话,可以调高 fpm 子进程的数量,并设为静态。具体参数得测试了。还有其他各种监控、分析方法,这儿就不详叙述了。
如何部署pythonweb程序?
python Web 程序的部署方案
综合而言, 高性能的Python web站点部署方式首推 nginx + uwsgi
Apache + mod_wsgi 是简单稳定但性能一般的方式
API服务器 可以直接使用tornado或者gevent
mod_python
非常原始的cgi模式部署python已经没有什么好介绍了。对于不太追求性能的管理系统和网站来说,使用 Apache 部署是一个不错的选择。较早的时候,使用 mode_python 部署python的web应用十分流行,在Django 0.96 的时候官方文档甚至推荐这种方式。
它将Python解释器嵌入到Apache server,以提供一个访问Apache server内部的接口。mod_python 在现在看来性能是不佳的,每一个http请求 mod_python 都会由一个进程初始化python解释器、载入代码、执行、然后销毁进程。
mod_wsgi
如果非要用Apache来部署python应用,mod_wsgi是一个更好的选择。WSGI 全称是 Web Server Gateway Interface ,由 PEP-333 定义。 基本上所有的python web框架都实现了wsgi接口,用mod_wsgi 能部署任何实现了wsgi的框架。实际上,不需要任何框架也可以用mod_wsgi 部署python程序。使用mod_wsgi的daemon模式,python程序会常驻内存,不会有很大的初始化和销毁进程方面的开销,所以性能是好于mod_python的。综合来说,使用Apache部署python web程序,推荐使用mod_wsgi的daemon模式。
Fastcgi
先说观点:不建议用fastcgi的方式部署Python web。
前几年由于lighttpd风头正劲和豆瓣的成功案例,fastcgi是一种很流行的部署方式。fastcgi与具体语言无关,也与web服务器无关。是一种通用的部署方式。fastcgi是对于cgi的增强,CGI程序运行在独立的进程中,并对每个Web请求建立一个进程。面对大量请求,进程的大量建立和消亡使操作系统性能大大下降。
与为每个请求创建一个新的进程不同,FastCGI使用持续的进程来处理一连串的请求。这些进程由FastCGI服务器管理,而不是web服务器。 当进来一个请求时,web服务器把环境变量和这个页面请求通过一个socket比如FastCGI进程与web服务器都位于本地)或者一个TCP connection(FastCGI进程在远端的server farm)传递给FastCGI进程。
主流的web服务器,Apache,lighttpd,nginx 都支持fastcgi,在几年前,lighttpd的mod_fcgi模块性能强劲,lighttpd+fastcgi十分流行。无论是python,ruby还是php,都有大量的站点使用这种方式部署。由于nginx的崛起,现在很少有人使用lighttpd了。
fastcgi 并不是专门为python设计,并不是所有的python框架天然的支持fastcgi,通常需要flup这样的容器来配适。flup由python编写,和专门的c实现的wsgi容器比起来性能显得相当不堪。fastcgi的稳定性对于新兴的wsgi容器来说也有差距。无论从哪个方面来看,部署python web程序,fastcgi 都已经是过去式。
uwsgi
前几年nginx还未内置uwsgi模块的时候,部署uwsgi还是一件挺麻烦的事情。随着能够在nginx中直接使用uwsgi模块,uwsgi已经是最可靠,最方便的高性能python web程序的部署方式了。
在1U的四核XEON服务器上,一个简单的wsgi handler甚至能用AB压到8000以上的qps,这已经是完爆tornado,接近gevent的性能了。 同时,uwsgi的稳定性极好。之前我们有个每天500w-1000w动态请求的站点使用uwsgi部署非常稳定,在一个渣HP 1U 服务器上,基本不用管它。
上面提到的部署方式都是相对于web网站的方式,在移动互联网的时代,我们需要的是高性能的API服务,上面这些都是过时的东西。
tornado
tornado 号称高性能,如果拿他写网站,其实一般般,只不过跟uwsgi加一些简单框架差不多而已。它真正的作用,是用来写API服务器和长连接的服务器。
由于tornado能够直接处理http请求,很多人直接拿他来裸奔直接提供服务。这种方式是不可取的,单线程的tornado只能利用cpu的一个核心,并且一旦阻塞直接就废了。通常情况下,由supervisor启动多个tornado进程,通过nginx进行反向代理负载均衡。nginx 1.14 以后的版本反向代理支持长连接,配合tornado的comet效果很好。
tornado还有一些比较奇葩的用法,比如用来做wsgi容器之类的。
gevent
gevent是一个神器,能做的事情很多。在web方面,处理http请求,用起来其实跟tornado差不多,但是要简陋很多,cookie之类的都没有。用gevent写的一些API服务,部署方式还是类似tornado,用supervisor管理多个守护进程,通过nginx做负载均衡。 同样的它的奇葩用法也和tornado一样,可以当wsgi容器用。
怎么制定Web前端学习计划?
一个非常好的问题。先解释下Web前端开发的新发展。
随着移动互联网的发展,前端开发成为重点。移动端有多个平台,Android,iOS,微信小程序,支付宝小程序,还有不断出现的新操作系统,比如阿里YunOS,华为鸿蒙,等等。
为了支持这些平台和系统,越来越多的应用开始使用H5跨平台架构,现在有个新名词叫做“大前端”。
一,H5跨平台开发这时的H5前端开发已经不再是单单的网页开发了,而是前端应用开发。具体到H5 Hybrid架构,常用三剑客:HTML, css, JavaScript
1) HTML和css是页面设计,没有代码逻辑
2) JavaScript编程,还有其它衍生语言,比如常用的TypeScript
JavaScript是一种脚本语言,由解释器加载执行,常用在网页前端动态展示、和服务后端交互等场景。接下来重点介绍JavaScript开发。
二,学习阶段和时间计划1)编程基础,一到两周
学习JavaScript语言基础,掌握基本的编程方法。如果对着课本教程学习比较枯燥,难以坚持,那么可以使用网上的一些学习练手资源,边学习边动手,比如HackerRank
2)开发框架,一到两月
JavaScript前端开发有很多成熟的框架可用,比如JQuery, AngularJS,React,还有前后端都跑通的NoteJS。阿里开源框架Ant Design Pro是一个功能完善的脚手架,推荐新学者练手。
新手学习时,推荐当前普遍使用的Top3开发框架,太新或者太旧的都不适合用来学习练手。
3)项目经验,一到两年
学习的最终目的是学以致用,在实际项目中积累经验,不断提升。有了一定技术基础后,推荐尝试参与开源项目,在开发功能、提交代码的过程中,提升非常快。而且开源项目经验,和工作经验一样,应聘时非常受欢迎。
我是工作多年的Web应用架构师,欢迎关注我,了解更多IT专业知识。
电脑502什么意思?
一、什么是502 bad gateway?
通俗的来讲,502 bad gateway代表您所访问的网站出了问题,因为502 Bad Gateway 服务器作为网关或者代理时,是为了完成访问下一个服务器,但该服务器返回了非法的应答。也许是暂时的,也许是的。建议大家稍等一下再从新访问试试。
二、502 bad gateway产生原因?
502 bad gateway产生的大多数原因都是由于连接超时,我们向服务器发送请求,由于服务器当前的链接数太多,导致服务器无法给于正常的响应,才会产生502 bad gateway报错。
一般来说,服务器只是作为网关或代理,以满足客户的要求(如Web浏览器)来访问我们所请求的URL。服务器收到无效的响应从上游服务器访问请行它的要求。这并不意味着上游服务器已关闭(无响应网关/代理),而是上游服务器和网关/代理不同意协议交换数据。由于互联网协议是固定的,所以,这意味着一个或两个机器已经不正确或没有完全编程。
三、固定502错误产生原因?
一般这个问题是由于不良的IP之间的沟通后端计算机,可能包括在Web服务器上的网站您尝试访问。在分析这个问题,您应该清除浏览器缓存再访问。
如果您上网时在您尝试访问的所有网站上都看这个问题,有两种可能
①你的ISP重大设备故障/过载
②有问题的内部互联网连接如您的防火墙无法正常运作。
在种情况下,只有您的ISP可以帮助您。在第二种情况下,你需要解决什么,那是阻止你进入互联网。
如果您只有在部分尝试访问的网站中出现此问题,那很可能是一个问题,即这些网站之一,其设备故障或超载。联系你网站的管理员。
四、502 bad gateway解救方法?
1、刷新
说白了很简单是——刷新(不是一般的刷新哦)
这里所讲的刷新主要是指从服务器下载数据到本地的硬盘浏览器,再从本地硬盘中读取数据到浏览器显示给我们看。通常有两种刷新模式:
①基本刷新:是点击刷新或者使用F5快捷键
基本刷新只是从本地的硬盘重新拿取数据到浏览器,并不重新向服务器发出请求。大部分用户很多时候都是这样刷新的,遇到502报错的没有任何效果。
②从服务器刷新:如果你重新直接点击你想要浏览的网页链接,你会发现刚刚还显示的"502 bad gateway"错误信息页面,重新点击链接后又可以正常浏览。
解决方法:是从服务器上刷新:快捷键 ctrl+F5,这样是重新向服务器发送请求了,如果服务器能正常给予你响应你可以看到页面了。
2、DNS 缓冲问题
这种情况主要是你在没有用vpn的情况下,访问了国外一些被国家防火墙屏蔽的网站如YouTube,facebook之类。
解决办法:这种情况通常在几分钟之内可以访问了。也可以尝试 在cmd窗口运行 ipconfig /flushdns 来刷新DNS缓存
3、dns 被劫持
解决办法:更换DNS,推荐114.114.114.114,还有阿里的公共DNS 如:223.5.5.5、223.6.6.6
五、nginx 502 bad gateway错误
①查看php-cgi是否在运行
有时候由于网站流量过大或者其它原因,导致php-cgi直接down掉,所以我们得看php-cgi是否在运行。执行以下命令:
ps -A | grep php5-cgi
若没有运行,我们可以手动启动
/etc/init.d/php_cgi start
如果你发现php-cgi不明原因有时候down掉,可以使用下面的脚本临时解决这个问题,添加到cronjob。
if ps aux | grep ‘php5-cgi’ | grep -v grep > /dev/null ; then echo "PHP-cgi is runnning !" else echo "PHP-cgi is down. Starting over…" /etc/init.d/php-fcgi start fi
②fastcgi进程数不够用、php执行时间长的原因
fastcgi进程数可以修改php-fpm.conf中的max_children的数值,高峰时php-cgi耗掉的内存为20M,请根据自己的内存情况计算了。
限制php执行时间可以在php-fpm.conf中的request_terminate_timeout设置,这是为了防止php程序的bug导致php-cgi假死。
③FastCGI执行时间过长
根据实际情况调高以下参数值
fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300;
六、解决nginx出现502的错误
①查看当前的PHP FastCGI进程数是否够用
netstat -anpo | grep "php-cgi" | wc -l
如果实际使用的"FastCGI进程数"接近预设的"FastCGI进程数",那么,说明"FastCGI进程数"不够用,需要增大。
②部分PHP程序的执行时间超过了Nginx的等待时间,可以适当增加nginx.conf配置文件中FastCGI的timeout时间
例如,系统当前的PHP FastCGI进程数明显超过了预设值的64这个数值,在电信的服务器上查看当前的PHP FastCGI进程数没有高于64这个数值,而且网通线路的活动连接明显高于电信的活动连接,由此可以说明出现nginx不稳定的情况是由于服务器访问负载过大引起的。
php-cgi进程数不够用、php执行时间长、或者是php-cgi进程死掉,都会出现502错误
Studio要支持Java了?
谢谢邀请!
使用过Visual Studio的程序员应该对其强大的功能印象深刻,对于70后、80后的程序员来说,Visual Studio几乎是必须掌握的开发工具,在PC时代Visual Studio几乎就是开发工具的代名词。
随着互联网时代的到来,Visual Studio的使用并没有延续之前的辉煌,随着Java、PHP、Python的崛起,Visual Studio似乎开始逐渐远离了程序员的桌面,虽然Visual Studio依然强大,但是奈何互联网选择了Java和PHP。虽然很多VS程序员转向了Java等语言,但是不可否认的是,这些程序员对VS的忠诚度还是比较高的,一直希望VS能够支持Java语言。现在VS终于开始支持Java了,对于开发人员来说,无疑是一个好消息。
VS支持Java开发至少会带来以下几个方面的好处:
第一:给了程序员更多的选择空间。在Java开发领域采用比较多的开发工具是Eclipse和IntelliJ IDEA,虽然这些工具使用起来比较方便,但是多一个选择毕竟不是坏事,更何况是微软的产品。
第二:进一步整合开发环境。对于程序员来说,一个比较麻烦的事情就是开发环境的切换,不少程序员的桌面上安装了一堆开发环境,常见的包括VS、Eclipse(IDEA)、PHP、Python等,根据目前披露出来的消息,VS此次不仅支持Java,也支持Python等多种语言的开发,甚至支持OC和Swift语言,这对程序员来说绝对是一件方便开发的好事。
第三:利于团队协作。VS支持Java语言带来的另一个好处是方便团队的协作,通过Live Share可以完成在线调试、系统开发、版本追踪等一些列功能,可以说这些对于程序开发团队来说都是非常重要的。
总之,VS支持Java开发绝对是一件好事,尤其是对于从事过VS开发的程序员群体来说。
作者简介:中国科学院大学计算机专业研究生导师,从事IT行业多年,研究方向包括动态软件体系结构、大数据、人工智能相关领域,有多年的一线研发经验。欢迎关注作者,欢迎咨询计算机相关问题。