有问题就有答案
Q1:有一台阿里云服务器 为什么一段时间后他会自动删nginx
换独立服务器吧
Q2:如何解决Nginx服务自动关闭问题
首先,排除是否是网络问题:iptable被勾选等。同时,如果真的是网络问题,在不可接受的新连接现象出现之前,也不应该运行一段时间。为了验证,当出现问题时,我重新启动了Nginx,发现我可以再次接收新的请求。也就是说,出现问题时,只有重启Nginx才能解决,所以自然不是网络因素。判断是否是Nginx自己的问题(并不一定意味着代码中包含我写的配置文件):因为这个代理服务器是为了测试fastsocket项目的稳定性,所以Nginx加载fastsocket优化服务。此时,需要最纯粹的Nginx环境。我删除了fastsocket服务,然后用同样的配置启动了Nginx。这时候就排除了Nginx本身的问题。那么,它是fastsocket中的一个bug吗?这里有一个小广告:fastsocket是新浪牵头的开源项目,通过封装socket socket调用,可以在不改变服务程序的情况下,大幅提升服务程序的性能。作者也是维护者之一。这里有一个小小的提升:https://github.com/fastos/fastsocket.当使用fastsocket默认加载参数时,nginx在运行一段时间后无法接受新的连接请求。定位fastsocket问题:fastsocket的优化功能大部分都有功能开关,部分功能会默认使用。同时,参数可用于指定加载动态模块时是否打开开关。这时候先做实验,从关闭所有功能开始,逐渐打开功能开关,最后打开enable_listen_spawn功能,就会出现问题。并且已经做了很多实验来证实这是一个必要的问题。确认可以复制后,不知道这是不是fastsocket的bug?于是,我把我的发现告诉了我的同学林晓峰。毕竟,fastsocket是他在新浪的工作,他最熟悉代码。他说可能是Nginx配置了accept_mutex。虽然我的配置文件没有配置accept_mutex,但我没想到默认情况下会打开Nginx的accept_mutex。但他忘了为什么会这样。我依稀记得Nginx hang是在互斥中,具体原因记不清了。因此,fastsocket的描述也需要disable accept_mutex。因为我一直有很好的求知欲,所以一定要把这个问题搞清楚。同时,我认为如果启用accept_mutex,那么fastsocket和nginx会有兼容性问题,这应该算是fastsocket的bug,应该解决。定位Nginx挂在哪里:这很简单,用strace -p跟踪Nginx的每一个工作进程。发现大部分的工作进程都是不断的epoll_wait,其中一个工作进程总是停留在epoll_wait。再试多次,每次都留在epoll_wait。既然已经发现了这个问题,那么在使用fastsocket的enable_listen_spawn函数,也就是fastsocket自动为当前CPU创建一个本地监听套接字套接字时,就会出现问题。当您找到问题时,您需要一步一步地找到原因,以了解为什么工作进程总是停留在epoll_wait中。这个时候,其实思考总比动手好。先思考,再行动。做了之后,看到结果,再进一步思考。检查工作进程在epoll_wait中停留的位置:在epoll_wait中挂起的位置只能通过日志形式来判断。此时不能在内核中用普通的printk打印日志,否则会淹没在大量正常工作进程打印的日志中。我们需要根据pid打印日志。再做一个小广告:我做了一个内核小工具git @ github.com : gree wind/unit _ perf . git.是用来定位内核代码性能瓶颈的工具,还有一些辅助工具。如果你认为可以,请赞美一个明星。它提供了一个宏UP_pid_INFO_LOG,用于打印指定pid的日志,可以由proc指定。这样,我在epoll_wait中添加了很多日志。Nginx启动后,通过proc指定打印工作进程的日志。最后发现epoll_wait是因为指定了无限等待时间,所以工作进程一直处于挂起状态。
Nginx让一个工作进程无限期等待,稍微颠覆了我对Nginx的理解。我觉得Nginx总是用非阻塞系统调用,至少核心模块是这样处理的。那么为什么会这样呢?这时候,你需要思考,而不是动手。毫无疑问,accept_mutex是一把钥匙。它用于平衡不同工作进程的负载。看一点Nginx相关的代码,就能看懂了。当Nginx无法接收新的连接请求时,必须轮到hang所在的进程接收新的连接请求。因此,虽然其他进程不与挂起共存,但它们不能接收新请求,而可以接收新请求的进程与挂起共存,这导致了问题。为什么hang所在的进程不能接收新的请求?此时还是先思考。首先,我们应该概述内核的标准TCP连接过程,然后比较启用fastsocket后的TCP连接过程。这两者之间的差异有可能导致这个问题。尤其是在启用了产卵套接字时,它不同于标准进程。在spawn socket中,实际上为每个cpu创建了一个本地监听套接字的哈希表,它不同于全局监听表。这样,一方面在访问全局哈希表时需要锁,另一方面使TCP会话成为本地的,可以尽可能地命中缓存。对于同一个中央处理器,因为有两个监听表,所以会收到一个新的TCP连接。接请求时,必须先检查本地的listen表,然后再检查全局表。 根据这样的流程和现象,应该是所有的连接请求,都被发到其它的CPU,并且匹配中了其它CPU的本地listen表,所以全局表中的listen socket套接字一直没有被匹配到。那么hang住的进程,既没有连接请求匹配本地listen表中的套接字,而全局表也一样,因为被请求都被其它CPU命中了本地的套接字。所以问题更为明朗了,hang住的进程所在的CPU不能收到任何新连接请求。这时其实已经到了冲刺的时候了。开始的时候,我还想着,是否是fastsocket影响了数据包的分发,还想检查一下代码。但一想,还是先看看 RPS的设置吧——虽然我没有设置网卡的任何RPS。结果出乎我意料,原来阿里云ECS服务器默认就把网卡的RPS设置了,唯一的外网网卡的RPS设置为 了0000,所以只有CPU 0能收到新连接请求,而另外的CPU1收不到任何的连接请求,这就造成了运行在CPU1上的worker进程hang住。最后我修改了该网卡的RPS设置,使其可以将数据包分发到不同的CPU上。这样在加载了fastsocket后,即使打开了accept_mutex,Nginx也可以正常工作了。本次过程,虽然最后发现只是服务器配置的问题,但整个儿过程还是收获不少。唯一的遗憾,是还没有定位Nginx对与epoll_wait的超时计算。开始的时候,都是500ms,后面因为什么因素变成了无限。这留到有时间的时候,再阅读Nginx源码吧。
Q3:阿里云上搭建的nginx服务器间歇性无法访问
我无法为你明确定位问题,大部分描述都遇到过,比如“服务无法访问”、“不可访问期间无法连接ssh连接服务器,但不会断开原来的ssh连接”。我遇到的原因是服务器资源被消耗到了极限(在我的例子中,部署的java服务消耗了太多内存,云主机的内存太小)。验证是否类似:“不可访问期间无法连接ssh连接服务器,但不会断开原来的ssh连接”,使用连接的终端查看服务器资源内存等。并杀死显示消耗最多资源(内存)的程序,然后继续ssh连接。如果此时一切都可以连接,那也是正常的。这就是问题所在。
Q4:云服务器哪里的最好,为什么阿里云的服务器过段时间总是莫名多了用户
阿里的云服务器有9折的最新推荐码:7h7qra 只要是首次购买,都可以用。建议你首次购买一步到位比较好。这个推荐码活动只限首次购买,所以先买几个月,再续费,续费时就没有这个折扣了。一次最好是多买几年更省一些。
Q5:阿里云服务器到期了几天会停掉
轻量应用服务器到期后,会将服务器关机,7 天内数据保留,用户可以续费。超过 7 天后未续费,服务器将会被释放。云服务器技术原理:分布式存储用于将大量服务器整合为一台超级计算机,提供大量的数据存储和处理服务。分布式文件系统、分布式数据库允许访问共同存储资源,实现应用数据文件的IO共享。通过API接口对云主机资源进行调配,实现对KVM的一键式系统安装、备份、远程重启、状态监控等功能。百度开放云平台平台的每个集群节点被部署在互联网的骨干机房,可独立提供 计算、存储、在线备份、托管、带宽等互联网基础设施服务。扩展资料云计算服务器具有以下特点,即高密度(High-density)、低能耗(Energy-saving),易管理(Reorganization )、系统优化(Optimization)。1、高密度(High-density):未来的云计算中心将越来越大,而土地则寸土寸金,机房空间捉襟见肘,如何在有限空间容纳更多的计算节点和资源是发展关键。2、低能耗(Energy-saving):云数据中心建设成本中电力设备和空调系统投资比重达到65%,而数据中心运营成本中75%将是能源成本。可见,能耗的降低对数据中心而言是极其重要的工作,而云计算服务器则是能耗的核心。3、易管理(Reorganization ):数量庞大的服务器管理起来是个很大问题,通过云平台管理系统、服务器管理接口实现轻松部署和管理则是云计算中心发展必须考虑的因素。4、系统优化(Optimization):在云计算中心中,不同的服务器承担着不同的应用。例如有些是虚拟化应用、有些是大数据应用,不同的应用有着不同的需求。因此针对不同应用进行优化,形成针对性的硬件支撑环境,将能充分发挥云计算中心的优势。参考资料来源:阿里云帮助中心—轻量应用服务器到期释放时间和数据保留时间分别是多长?参考资料来源:百度百科—云服务器
Q6:liunx nginx删除依然能用
的阿里云的服务器,80端口进程杀掉了,nginx也已经删除完了。但是nginx的跳转依然有效。这个是什么问题IP依然存在