• 关于 同时多线程无法连接 的搜索结果

回答

先谈谈题主说的这两种服务器模型:1、收到一个请求就处理,这个时候就不能处理新的请求,这种为阻塞 这个是单线程模型,无法并发,一个请求没处理完服务器就会阻塞,不会处理下一个请求。一般的服务器不会使用这种方式实现。2、收到一个请求就新开一个线程去处理任务,主线程返回,继续处理下一个任务,这种为非阻塞 首先纠正一个错误,这并不是非阻塞,它也是阻塞的。相对第一个模型来说,它解决了主线程阻塞的问题,有了一定程度的并发量,但是在每个新开的线程中还是阻塞的。如果100个人同时访问,将会开100个线程,那1000个人,10000个人呢?频繁开关线程很消耗资源,这样实现的服务器性能依然不高。除了上面的两种方式,接下来的说说其他更好的方式:3、类似2的模型,但是不是每次收到请求就开一个新的线程,而是使用线程池 如果不了解线程池,你可能会了解数据库连接池,由于频繁创建、关闭数据库连接会消耗资源,所以会用数据库连接池来保存一定数量的连接,如果需要就从连接池里取连接,不需要则放回连接池,不在频繁创建。线程池也是一样的道理,线程池管理多线程,性能比频繁创建线程高得多。这种方式实现的服务器性能会比2高。不过,它依然是阻塞的。线程池的线程数量通常有限制的,如果所有线程都被阻塞(例如网速慢,或者被人恶意占用连接),那么接下来的请求将会排队等待。4、基于Java NIO实现的服务器模型 上面说到的几种模型,都是基于BIO(阻塞IO)。而NIO则是非阻塞IO,它是基于IO多路复用技术(例如Reactor模式)实现,只需要一个线程或者少量线程,就可以处理大量请求。从性能上来说NIO实现的服务器并发性一般大于BIO,所以可以实现高性能的服务器。如果感兴趣,可以学习一些基于NIO的网络编程框架,例如Netty、MINA。最后,回答一下题主说到的Tomcat。Tomcat运行可以选择BIO或者NIO模型,原理分别对应上面的3和4两种方式。Tomcat默认是BIO方式运行,如果想要换成NIO,可以配置server.xml:从性能上考虑建议使用NIO。

蛮大人123 2019-12-02 01:52:18 0 浏览量 回答数 0

问题

struts2高并发cpu爆满,服务器无法接收请求,客户端显示连接超时,求助

落地花开啦 2019-12-01 19:34:04 1374 浏览量 回答数 1

问题

性能优化总结:CPU和Load、NIO以及多线程:报错

kun坤 2020-06-07 21:31:24 0 浏览量 回答数 1

新用户福利专场,云服务器ECS低至102元/年

新用户专场,1核2G 102元/年起,2核4G 699.8元/年起

回答

同步异步是针对Server端而言,阻塞or非阻塞指的是Client端而言。 异步同步指的是服务提供者提供服务的方式,是立马服务,还是先接待,慢慢做,做完了,再通知你,客户无法立马得到服务。同步是 你要啥,当场就拿给你,异步是 你要啥,我记下了,我慢慢做,做好了,我通知你。 比如,饭店里一般都是异步的,你下单后,是先给你个号,做好了再通知你(通知有好几种方式,我放到你指定的位置,你自己去拿,一种是我通知你做好了,你自己过来拿,一种是自己主动不停的问:做好了吗?),不是立马为你服务。 阻塞非阻塞说的是服务需求者在得到服务反馈之前需不需要等待。 Reactor模型 一个Accptor线程,专门用来负责与Client建立连接,你可以类比到饭店门外的揽客的服务员,专门拉客进去消费的。 一个或多个EventLoop,用来负责接待顾客,你可以类比到饭店里服务接待顾客下单的服务员,你点菜,她会记录下来,然后把下单请求记录到系统,系统再把订单分派给厨师去异步处理。处理线程:就是真正干活的,类比饭店里的厨师。({江苏-互联网-零度} Reactor模型很多,可以是单线程模型、可以是多线程模型,也可以是主从多线程模型。)单线程模型就是同时只有一个厨师干活,干完了,下一个订单再派个厨师上来接着干。 来源:云原生后端社区

Atom 2020-04-25 14:46:58 0 浏览量 回答数 0

回答

如何修改TCP/IP并发连接数,网络上提供不少修改办法,但其中有不少是行通的,本文将做详细分析. 一、注册表修改法的误区 为了突破SP2对TCP并发连接数的限制,网上曾经流传过一种修改注册表的方法,操作步骤如下: 单击“开始”/运行,输入Regedit打开注册表,定位到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters下,修改的“TcpNumConnections”的键值,将之由10改为150,即设置TCP最大并发连接数为150。 经过实际测试,我们发现该方法看起来有效,但实质上并不能突破并发连接数限制,提高SP2的多线程访问速度。因为SP2对线程数目的控制,是通过“Tcpip.sys”这个系统文件来实现的,并不是通过注册表实现的,因此,该方法不能增加SP2的TCP并发连接数。 二、使用工具来替换Tcpip.sys 为了突破SP2的TCP并发连接数限制,正确地方法是修改Windows XP SP2的系统文件Tcpip.sys。Tcpip.sys是Windows XP SP2重要的系统文件,位于“C:\Windows\system32\drivers目录下。该文件由于平时受到系统保护,所以正常情况下你是无法替换它的,必须在安全模式或纯DOS模式下才能替换,建议你使用以下专门工具、来替换“Tcpip.sys”文件,操作步骤如下: 从网上 http://www.lvllord.de/download.php?url=en/EvID4226Patch223d-en.zip下载替换工具(仅为30KB),用它来修改系统文件Tcpip.sys最大安全并发连接限制;然后备份一下C:\Windows\system32\drivers\Tcpip.sys文件。 接下来,双击打开下载文件ZIP压缩包,运行其中的替换工具EvID4226Patch.exe,随之将弹出一个命令行提示符窗口,首先显示Windows当前的Tcpip.sys文件版本,以及并发连接的限制数值(默认为10);接着询问你是否将连接数限制在50,你可以选择“Yes/No/Change”,如果你输入“Y”,则会将并发连接数改为“50”,如果想改为其他数(例如150),可以在提示符后输入“c”,然后输入最大的并发连接数(例如150)回车,最后在提示符下输入“Y”并回车,这样就替换了Tcpip.sys文件;Tcpip.sys文件被替换后,随之会弹出系统文件保护对话框,你可以点击“取消”按钮,然后点击“是”按钮,重新启动后,Tcpip.sys文件的替换就大功告成了! 现在你的最大并发连接数已超过10个,达到了150个,因此Windows XP SP2的多线程访问速度得到了提升,当你用FlashGet、BT等多线程下载时,就不会感到网络带宽的限制了。 三、DOS下修改Tcpip.sys文件 以上替换程序EvID4226Patch.exe也可以在DOS下使用,方法是:首先把EvID4226Patch.exe拷贝到C盘根目录下;然后再进入DOS模式,进入C盘根目录,输入命令EvID4226Patch/L=$n$/w=C:\WINDOWS\system32\drivers/L=tcpip.sys即可修改Tcpip.sys文件。 注意:以上$n$为你要设置的最大安全连接数,假如要把最大并发连接数设置为150个线程,那么输入命令EvID4226Patch/L=150/w=C:\WINDOWS\system32\drivers/L=tcpip.sys即可。 四、使用比特精灵附带的工具 比特精灵附带的工具“TCP/IP连接数破解补丁”也可以替换Tcpip.sys,突破SP2的TCP并发连接数限制。 从网上 http://download.pchome.net/php/dl.php?sid=15504下载比特精灵(BitSpirit)V2.7.2.225简体中文正式版,然后双击下载文件进行安装。你可以选择安装哪些组件(下图2),应该安装“用于Windows XP SP2的TCP/IP连接数破解补丁”,安装结束后,XP开始菜单中就会有BitSpirit程序组,单击其中的“XP SP2连接数破解补丁”,即可修改Tcpip.sys文件。 单击“XP SP2连接数破解补丁”,弹出该软件的界面,界面中列出了当前Tcpip.sys的版本、及最大并发连接数(右图3),你可以在“TCP/IP Linitation”输入一个数,来设置最大并发连接数,例如输入150,然后按“Apply”按钮,重启系统后,你的SP2最大并发连接数就改为了150。 以上几种方法虽然提高了Windows XP SP2的多线程访问速度,但却降低了SP2的安全性能,如果你的电脑感染了病毒和木马,过多地启用新线程,会加速病毒和木马地蔓延,因此你在追求网络下载速度的同时,也要注意网络安全。建议你及时安装升级杀毒软件和防火墙,如果是普通用户,可以利用上面的方法,将TCP最大并发连接数设置为10~30,BT用户可以设置为100~150。 “答案来源于网络,供您参考” 希望以上信息可以帮到您!

牧明 2019-12-02 02:17:48 0 浏览量 回答数 0

回答

1.阻塞与同步2.BIO与NIO对比3.NIO简介4.缓冲区Buffer5.通道Channel6.反应堆7.选择器8.NIO源码分析9.AIO1.阻塞与同步1)阻塞(Block)和非租塞(NonBlock):阻塞和非阻塞是进程在访问数据的时候,数据是否准备就绪的一种处理方式,当数据没有准备的时候阻塞:往往需要等待缞冲区中的数据准备好过后才处理其他的事情,否則一直等待在那里。非阻塞:当我们的进程访问我们的数据缓冲区的时候,如果数据没有准备好则直接返回,不会等待。如果数据已经准备好,也直接返回2)同步(Synchronization)和异步(Async)的方式:同步和异步都是基于应用程序私操作系统处理IO事件所采用的方式,比如同步:是应用程序要直接参与IO读写的操作。异步:所有的IO读写交给搡作系统去处理,应用程序只需要等待通知。同步方式在处理IO事件的时候,必须阻塞在某个方法上靣等待我们的IO事件完成(阻塞IO事件或者通过轮询IO事件的方式).对于异步来说,所有的IO读写都交给了搡作系统。这个时候,我们可以去做其他的事情,并不拓要去完成真正的IO搡作,当搡作完成IO后.会给我们的应用程序一个通知同步:阻塞到IO事件,阻塞到read成则write。这个时候我们就完全不能做自己的事情,让读写方法加入到线程里面,然后阻塞线程来实现,对线程的性能开销比较大,参考:https://blog.csdn.net/CharJay_Lin/article/details/812598802.BIO与NIO对比block IO与Non-block IO1)区别IO模型 IO NIO方式 从硬盘到内存 从内存到硬盘通信 面向流(乡村公路) 面向缓存(高速公路,多路复用技术)处理 阻塞IO(多线程) 非阻塞IO(反应堆Reactor)触发 无 选择器(轮询机制)2)面向流与面向缓冲Java NIO和IO之间第一个最大的区别是,IO是面向流的.NIO是面向缓冲区的。Java IO面向流意味着毎次从流中读一个成多个字节,直至读取所有字节,它们没有被缓存在任何地方,此外,它不能前后移动流中的数据。如果需要前后移动从流中读取的教据,需要先将它缓存到一个缓冲区。Java NIO的缓冲导向方法略有不同。数据读取到一个它稍后处理的缓冲区,霱要时可在缓冲区中前后移动。这就增加了处理过程中的灵活性。但是,还需要检查是否该缓冲区中包含所有您需要处理的数裾。而且,需确保当更多的数据读入缓冲区时,不要覆盖缓冲区里尚未处理的数据。3)阻塞与非阻塞Java IO的各种流是阻塞的。这意味着,当一个线程调用read() 或 write()时,该线程被阻塞,直到有一些数据被读取,或数据完全写入。该线程在此期间不能再干任何事情了。 Java NIO的非阻塞模式,使一个线程从某通道发送请求读取数据,但是它仅能得到目前可用的数据,如果目前没有数据可用时,就什么都不会获取。而不是保持线程阻塞,所以直至数据变的可以读取之前,该线程可以继续做其他的事情。 非阻塞写也是如此。一个线程请求写入一些数据到某通道,但不需要等待它完全写入,这个线程同时可以去做别的事情。 线程通常将非阻塞IO的空闲时间用于在其它通道上执行IO操作,所以一个单独的线程现在可以管理多个输入和输出通道(channel)。4)选择器(Selector)Java NIO的选择器允许一个单独的线程来监视多个输入通道,你可以注册多个通道使用一个选择器,然后使用一个单独的线程来“选择"通道:这些通里已经有可以处理的褕入,或者选择已准备写入的通道。这选怿机制,使得一个单独的线程很容易来管理多个通道。5)NIO和BIO读取文件BIO读取文件:链接BIO从一个阻塞的流中一行一行的读取数据image | left | 469x426NIO读取文件:链接通道是数据的载体,buffer是存储数据的地方,线程每次从buffer检查数据通知给通道image | left | 559x3946)处理数据的线程数NIO:一个线程管理多个连接BIO:一个线程管理一个连接3.NIO简介在Java1.4之前的I/O系统中,提供的都是面向流的I/O系统,系统一次一个字节地处理数据,一个输入流产生一个字节的数据,一个输出流消费一个字节的数据,面向流的I/O速度非常慢,而在Java 1.4中推出了NIO,这是一个面向块的I/O系统,系统以块的方式处理处理,每一个操作在一步中产生或者消费一个数据库,按块处理要比按字节处理数据快的多。在NIO中有几个核心对象需要掌握:缓冲区(Buffer)、通道(Channel)、选择器(Selector)。参考:链接image2.png | center | 851x3834.缓冲区Buffer缓冲区实际上是一个容器对象,更直接的说,其实就是一个数组,在NIO库中,所有数据都是用缓冲区处理的。在读取数据时,它是直接读到缓冲区中的; 在写入数据时,它也是写入到缓冲区中的;任何时候访问 NIO 中的数据,都是将它放到缓冲区中。而在面向流I/O系统中,所有数据都是直接写入或者直接将数据读取到Stream对象中。在NIO中,所有的缓冲区类型都继承于抽象类Buffer,最常用的就是ByteBuffer,对于Java中的基本类型,基本都有一个具体Buffer类型与之相对应,它们之间的继承关系如下图所示:image3.png | center | 650x3681)其中的四个属性的含义分别如下:容量(Capacity):缓冲区能够容纳的数据元素的最大数量。这一个容量在缓冲区创建时被设定,并且永远不能改变。上界(Limit):缓冲区的第一个不能被读或写的元素。或者说,缓冲区中现存元素的计数。位置(Position):下一个要被读或写的元素的索引。位置会自动由相应的 get( )和 put( )函数更新。标记(Mark):下一个要被读或写的元素的索引。位置会自动由相应的 get( )和 put( )函数更新。2)Buffer的常见方法如下所示:flip(): 写模式转换成读模式rewind():将 position 重置为 0 ,一般用于重复读。clear() :compact(): 将未读取的数据拷贝到 buffer 的头部位。mark(): reset():mark 可以标记一个位置, reset 可以重置到该位置。Buffer 常见类型: ByteBuffer 、 MappedByteBuffer 、 CharBuffer 、 DoubleBuffer 、 FloatBuffer 、 IntBuffer 、 LongBuffer 、 ShortBuffer 。3)基本操作Buffer基础操作: 链接缓冲区分片,缓冲区分配,直接缓存区,缓存区映射,缓存区只读:链接4)缓冲区存取数据流程存数据时position会++,当停止数据读取的时候调用flip(),此时limit=position,position=0读取数据时position++,一直读取到limitclear() 清空 buffer ,准备再次被写入 (position 变成 0 , limit 变成 capacity) 。5.通道Channel通道是一个对象,通过它可以读取和写入数据,当然了所有数据都通过Buffer对象来处理。我们永远不会将字节直接写入通道中,相反是将数据写入包含一个或者多个字节的缓冲区。同样不会直接从通道中读取字节,而是将数据从通道读入缓冲区,再从缓冲区获取这个字节。image4.png | center | 368x191在NIO中,提供了多种通道对象,而所有的通道对象都实现了Channel接口。它们之间的继承关系如下图所示:image5.png | center | 650x5171)使用NIO读取数据在前面我们说过,任何时候读取数据,都不是直接从通道读取,而是从通道读取到缓冲区。所以使用NIO读取数据可以分为下面三个步骤:从FileInputStream获取Channel 创建Buffer 将数据从Channel读取到Buffer中 例子:链接 2)使用NIO写入数据使用NIO写入数据与读取数据的过程类似,同样数据不是直接写入通道,而是写入缓冲区,可以分为下面三个步骤:从FileInputStream获取Channel 创建Buffer 将数据从Channel写入到Buffer中 例子:链接 6.反应堆1)阻塞IO模型在老的IO包中,serverSocket和socket都是阻塞式的,因此一旦有大规模的并发行为,而每一个访问都会开启一个新线程。这时会有大规模的线程上下文切换操作(因为都在等待,所以资源全都被已有的线程吃掉了),这时无论是等待的线程还是正在处理的线程,响应率都会下降,并且会影响新的线程。image6.png | center | 739x3362)NIOJava NIO是在jdk1.4开始使用的,它既可以说成“新IO”,也可以说成非阻塞式I/O。下面是java NIO的工作原理:1.由一个专门的线程来处理所有的IO事件,并负责分发。2.事件驱动机制:事件到的时候触发,而不是同步的去监视事件。3.线程通讯:线程之间通过wait,notify等方式通讯。保证每次上下文切换都是有意义的。减少无谓的线程切换。image7.png | center | 689x251注:每个线程的处理流程大概都是读取数据,解码,计算处理,编码,发送响应。7.选择器传统的 server / client 模式会基于 TPR ( Thread per Request ) .服务器会为每个客户端请求建立一个线程.由该线程单独负贵处理一个客户请求。这种模式带未的一个问题就是线程数是的剧增.大量的线程会增大服务器的开销,大多数的实现为了避免这个问题,都采用了线程池模型,并设置线程池线程的最大数量,这又带来了新的问题,如果线程池中有 200 个线程,而有 200 个用户都在进行大文件下载,会导致第 201 个用户的请求无法及时处理,即便第 201 个用户只想请求一个几 KB 大小的页面。传统的 Sorvor / Client 模式如下围所示:image8.png | center | 597x286NIO 中非阻塞IO采用了基于Reactor模式的工作方式,IO调用不会被阻塞,相反是注册感兴趣的特点IO事件,如可读数据到达,新的套接字等等,在发生持定率件时,系统再通知我们。 NlO中实现非阻塞IO的核心设计Selector,Selector就是注册各种IO事件的地方,而且当那些事件发生时,就是这个对象告诉我们所发生的事件。image9.png | center | 462x408当有读或者写等任何注册的事件发生时,可以从Selector中获得相应的SelectionKey,同时从SelectionKey中可以找到发生的事件和该事件所发生的具体的SelectableChannel,以获得客户端发送过来的数据。使用NIO中非阻塞IO编写服务器处理程序,有三个步骤1.向Selector对象注册感兴趣的事件2.从Selector中获取感兴趣的事件3.根据不同事件进行相应的处理8.NIO源码分析Selector是NIO的核心epool模型1)SelectorSelector的open()方法:链接2)ServerSocketChannelServerSocketChannel.open() 链接9.AIOAsynchronous IO异步非阻塞IOBIO ServerSocketNIO ServerSocketChannelAIO AsynchronousServerSocketChannel

wangccsy 2019-12-02 01:46:51 0 浏览量 回答数 0

问题

分享:OSS在多线程并发上传的测速

ftp4oss 2019-12-01 21:51:08 24559 浏览量 回答数 6

问题

mysql 主从同步原理

ethnicity 2019-12-01 21:11:51 6186 浏览量 回答数 1

问题

mysql 主从同步原理(转载)

ethnicity 2019-12-01 21:05:34 5743 浏览量 回答数 0

问题

关于什么是并发 -- 两个凡是的一点点看法 400 请求报错 

kun坤 2020-05-29 10:59:06 3 浏览量 回答数 1

回答

回答你的问题:thrift默认不是netty实现的,但可以用 nifty实现. nifty项目其实 就是 netty+ thrift. 其实你想做的事情我已经做过了,可参考ikasoa项目. 回复 @LarrySu:我们这边的问题我已经定位出来了,能加一下QQ,聊一下吗?我qq:1003943267回复 @LarrySu:我确定他没有使用netty,我想知道他的几个server的实现是不是高仿那个netty,高仿这种方式搜netty是不行的thrift和netty都是很好的项目,没有谁好谁坏一说。(补充一下:要判断thrift有没有用到netty很简单,libthrift源码下载来全文检索'netty'不就知道了么)你提到thrift的server模块支持4种时我就猜到你看过这篇文章了,严格来说不止这4种。我可以很负责地回答你thrift性能不算差,我也没有完全用netty替换thrift,只是多提供了一种选择而已,你遇到的问题我估计是你们自己没有管理好socket造成的。你们当初换掉thrift,改用netty作为底层通信模块的原因是什么?thrift性能有问题还是有其他的奇葩问题?是不再使用thrift吧?thrift底层的通信好像也是netty写的thrift底层的通信是netty写的.请注意server不同的线程服务模式.ulimit没懂啥意思?请注意thrift的rpc调用是非线程安全的。相同的thrift链接,调用rpc时一定要串行。。否则会导致服务器一直卡住。从而无法继续提供thrift服务。回复 @ahdkk:客户端向RPC服务器发起调用的时候,把操作统一丢到一个线程去执行,而不是在各自的线程执行,如果在各自的线程执行RPC客户端端调用,需要加锁。从而保证RPC调用是个原子操作。thriftRPC调用不是原子操作,如果同时2个rpc调用(在同一个连接)上,则会导致服务器卡主,无法回复,只能重启服务器,通过看服务器的调用堆栈是可以看出来thrift服务器卡在读数据那边。怎么串行?我们就是卡死导致的其他服务接入不进来

爱吃鱼的程序员 2020-06-09 15:32:16 0 浏览量 回答数 0

问题

网络游戏架构

nono20011908 2019-12-01 21:05:54 10236 浏览量 回答数 4

回答

回答你的问题:thrift默认不是netty实现的,但可以用nifty实现.nifty项目其实就是netty+thrift. 其实你想做的事情我已经做过了,可参考ikasoa项目. ######回复 @LarrySu : 我们这边的问题我已经定位出来了,能加一下QQ,聊一下吗?我qq: 1003943267######回复 @LarrySu : 我确定他没有使用netty,我想知道他的几个server的实现是不是高仿那个netty,高仿这种方式搜netty是不行的######thrift和netty都是很好的项目,没有谁好谁坏一说。(补充一下:要判断thrift有没有用到netty很简单,libthrift源码下载来全文检索'netty'不就知道了么)######你提到thrift的server模块支持4种时我就猜到你看过这篇文章了,严格来说不止这4种。我可以很负责地回答你thrift性能不算差,我也没有完全用netty替换thrift,只是多提供了一种选择而已,你遇到的问题我估计是你们自己没有管理好socket造成的。######你们当初换掉thrift,改用netty作为底层通信模块的原因是什么?thrift性能有问题还是有其他的奇葩问题?######是不再使用thrift吧?thrift底层的通信好像也是netty写的######thrift底层的通信是netty写的. 请注意server不同的线程服务模式.######ulimit######没懂啥意思?######请注意thrift的rpc调用是非线程安全的。相同的thrift链接,调用rpc时一定要串行。。否则会导致服务器一直卡住。从而无法继续提供thrift服务。######回复 @ahdkk : 客户端向RPC服务器发起调用的时候,把操作统一丢到一个线程去执行,而不是在各自的线程执行,如果在各自的线程执行RPC客户端端调用,需要加锁。从而保证RPC调用是个原子操作。 thrift RPC调用不是原子操作,如果同时2个rpc调用(在同一个连接)上,则会导致服务器卡主,无法回复,只能重启服务器,通过看服务器的调用堆栈是可以看出来thrift服务器卡在读数据那边。######怎么串行?我们就是卡死导致的其他服务接入不进来

kun坤 2020-05-29 13:03:02 0 浏览量 回答数 0

回答

错误(error )是指人们在使用软、硬件的时候,软、硬件不能正常操作的一种现象。由于错误的类型很多,为了对错误进行区分,系统设定了错误代码(error code),软、硬件在运行中如果发生错误,将通过它内部的原有的设定判断、识别而通过错误代码的显示方式给操作者,操作者通过错误代码识别,快速找到软、硬件不能正常操作的具体原因。windows错误代码列举1100 已经到达磁带的物理尽头。1101 磁带访问到文件标记。1102 到达磁带或分区首部。1103 磁带访问到文件组的末尾。1104 磁带上没有其他数据。1105 磁带无法分区。1106 访问多重卷分区的新磁带时,当前的区块大小不正确。1107 加载磁带时,找不到磁带分区信息。1108 无法锁定媒体退出功能。1109 无法卸载媒体。1110 驱动器中的媒体已经更改。1111 已经复位I/O 总线。1112 驱动器中没有媒体。1113 在目标多字节代码页中不存在对单码字符的映射。1114 动态链接库 (DLL) 初始化例程失败。1115 正在关闭系统。1116 无法终止系统关机,因为没有进行中的关机操作。1117 由于 I/O 设备出现错误,无法运行该请求。1118 串行设备初始化失败。将卸载串行驱动程序。1119 无法打开正与其他设备共享中断请求 (IRQ) 的设备。至少有一个使用该 IRQ 的设备已经打开。1120 由于再次写入串行口,串行 I/O 操作已结束。(IOCTL_SERIAL_XOFF_COUNTER 为零。)1121 由于超时,串行 I/O 操作已结束。 (IOCTL_SERIAL_XOFF_COUNTER 未达到零。)1122 在软盘上找不到标识符地址标记。1123 软盘扇区标识符字段与软盘控制器磁道地址不匹配。1124 软盘控制器报告软盘驱动程序不能识别的错误。1125 软盘控制器返回的结果和注册的不一致。1126 访问硬盘时,再校准操作失败,再试一次后也无法操作。1127 访问硬盘时,磁盘操作失败,再试一次后仍没有作用。1128 访问硬盘时,需要重启动磁盘控制器,但仍未成功。1129 磁带已卷到尽头。1130 可用的服务器存储区不足,无法执行该命令。1131 检测到潜在的死锁情况。1132 指定的基址或文件偏移量没有正确对齐。1140 试图更改系统电源状态的操作被另一应用程序或驱动程序禁止。1141 系统 BIOS 无法更改系统电源状态。1142 试图在一文件上创建超过系统允许数额的链接。1150 指定的程序需要新的 Windows 版本。1151 指定的程序不是 Windows 或 MS-DOS 程序。1152 无法启动指定程序的多个实例。1153 指定的程序是为 Windows 的早期版本编写的。1154 运行此应用程序所需的某个库文件已损。1155 没有应用程序与该操作中所指定的文件关联。1156 将命令发送到应用程序时出现错误。1157 找不到运行此应用程序所需的某个库文件。1158 当前进程已使用了 Window 管理器对象的系统允许的所有句柄。1159 消息只能与同步操作一起使用。1160 指出的源元素没有媒体。1161 指出的目标元素已包含媒体。1162 指出的元素不存在。1163 指出的元素是未显示的存储资源的一部分。1164 指出的设备需要重新初始化,因为硬件有错误。1165 设备显示在尝试进一步操作之前需要清除。1166 设备显示它的门仍是打开状态。1167 设备没有连接。1168 找不到元素。1169 索引中没有同指定项相匹配的项。1170 在对象上不存在指定的属性集。1171 传递到 GetMouseMovePoints 的点不在缓冲区中。1172 跟踪(工作站)服务没运行。1173 找不到卷 ID。1175 无法删除要被替换的文件。1176 无法将替换文件移到要被替换的文件。要被替换的文件保持原来的名称。1177 无法将替换文件移到要被替换的文件。要被替换的文件已被重新命名为备份名称。1178 卷更改记录被删除。1179 卷更改记录服务不处于活动中。1180 找到一份文件,但是可能不是正确的文件。1181 日志项已从日志中删除。1200 指定的设备名无效。1201 设备当前虽然未连接,但它是记忆连接。1202 试图记起已经记住的设备。1203 网络供应商不接受给定的网络路径。1204 指定的网络供应商名无效。1205 无法打开网络连接配置文件。1206 网络连接配置文件已损坏。1207 无法列举非包容类。1208 出现扩展错误。1209 指定组名的格式无效。1210 指定计算机名的格式无效。1211 指定事件名的格式无效。1212 指定域名的格式无效。1213 指定服务名的格式无效。1214 指定网络名的格式无效。1215 指定共享名的格式无效。1216 指定密码的格式无效。1217 指定的邮件名无效。1218 指定邮件目的地的格式无效。1219 所提供的凭据与现有凭据设置冲突。1220 试图与网络服务器建立会话,但与该服务器建立的会话太多。1221 网络上的其他计算机已经使用该工作组或域名。1222 网络不存在或者没有启动。1223 用户已经取消该操作。1224 所要求的操作无法在已经打开用户映射区域的文件中运行。1225 远程系统拒绝网络连接。1226 已经关闭网络连接。1227 网络传输的终点已经有一个地址与其关联。1228 网络终点尚未与地址关联。1229 试图在不存在的网络连接中操作。1230 试图在活动的网络连接上进行无效操作。1231-1233不能访问网络位置。有关网络疑难解答的信息,请参阅 Windows 帮助。1234 远程系统的目标网络端点没有运行任何服务。1235 该请求已经终止。1236 本地系统已经终止网络连接。1237 无法完成操作。请再试一次。1238 无法创建到该服务器的连接,因为已经到达了该帐户同时连接的最大数目。1239 试图在该帐户未授权的时间内登录。1240 尚未授权此帐户从该站登录网络。1241 网络地址无法用于要求的操作。1242 服务已经注册。1243 指定的服务不存在。1244 由于尚未验证用户身份,无法执行要求的操作。1245 由于用户尚未登录网络,无法运行要求的操作。指定的服务不存在。1246 继续工作。1247 完成初始化操作后,试图再次运行初始化操作。1248 没有其他本地设备。1249 指定的站点不存在。1250 具有指定名称的域控制器已经存在。1251 只有连接到服务器上时,才支持该操作。1252 即使没有改动,组策略框架也应该调用扩展。1253 指定的用户没有一个有效的配置文件。1254 Microsoft Small Business Server 不支持此操作。1300 不是对所有的调用方分配引用特权。1301 帐户名与安全标识符之间的映射未完成。1302 没有为该帐户明确地设置系统配额限制。1303 没有可用的密钥。返回已知的密钥。1304 密码太复杂,无法转换成 LAN Manager 密码。返回的 LAN Manager 密码是空字符串。1305 修订级别未知。1306 表示两个修订级别不兼容。1307 无法将此安全标识符指定为该对象的拥有者。1308 无法将此安全标识符指定为主要的对象组。1309 当前并未模拟客户的线程试图操作模拟令牌。1310 不可以禁用该组。1311 没有可用的登录服务器处理登录请求。1312 指定的登录会话不存在。该会话可能已终止。1313 指定的权限不存在。1314 客户不保留请求的权限。1315 提供的名称不是正确的帐户名称格式。1316 指定的用户已经存在。1317 指定的用户不存在。1318 指定的组已经存在。1319 指定的组不存在。1320 或者指定的用户帐户已经是某个特定组的成员,或者也可能指定的组非空而不能被删除。1321 指定的用户帐户不是所指定组帐户的成员。1322 上次保留的管理帐户无法关闭或删除。1323 无法更新密码。所输入的密码不正确。1324 无法更新密码。所提供的新密码包含不可用于密码的值。1325 无法更新密码。为新密码提供的值不符合字符域的长度、复杂性或历史要求。1326 登录失败: 用户名未知或密码错误。1327 登录失败: 用户帐户限制。1328 登录失败: 违反帐户登录时间限制。1329 登录失败: 禁止用户登录到该计算机上。1330 登录失败: 指定的帐户密码已过期。1331 登录失败: 当前禁用帐户。1332 未完成帐户名与安全性标识符之间的映射。1333 一次请求的本地用户标识符(LUID)太多。1334 没有其他可用的本地用户标识符(LUID)。1335 对这个特定使用来说,安全标识符的子部分是无效的。1336 访问控制清单(ACL)结构无效。1337 安全标识符结构无效。1338 安全描述符结构无效。1340 无法创建继承的访问控制列表(ACL)或访问控制项目(ACE)。1341 当前已禁用服务器。1342 当前已启用服务器。1343 所提供的值是无效的标识符授权值。1344 没有更多的内存用于更新安全信息。1345 指定的属性无效,或指定的属性与整个组的属性不兼容。1346 或者没有提供所申请的模仿级别,或者提供的模仿级别无效。1347 无法打开匿名级安全性符号。1348 所请求的验证信息类别无效。1349 该类符号不能以所尝试的方式使用。1350 无法在没有相关安全性的对象上运行安全操作。1351 未能从域控制器读取配置信息,或者是因为机器不可使用,或者是访问被拒绝。 错误(error )是指人们在使用软、硬件的时候,软、硬件不能正常操作的一种现象。由于错误的类型很多,为了对错误进行区分,系统设定了错误代码(error code),软、硬件在运行中如果发生错误,将通过它内部的原有的设定判断、识别而通过错误代码的显示方式给操作者,操作者通过错误代码识别,快速找到软、硬件不能正常操作的具体原因。windows错误代码列举1100 已经到达磁带的物理尽头。1101 磁带访问到文件标记。1102 到达磁带或分区首部。1103 磁带访问到文件组的末尾。1104 磁带上没有其他数据。1105 磁带无法分区。1106 访问多重卷分区的新磁带时,当前的区块大小不正确。1107 加载磁带时,找不到磁带分区信息。1108 无法锁定媒体退出功能。1109 无法卸载媒体。1110 驱动器中的媒体已经更改。1111 已经复位I/O 总线。1112 驱动器中没有媒体。1113 在目标多字节代码页中不存在对单码字符的映射。1114 动态链接库 (DLL) 初始化例程失败。1115 正在关闭系统。1116 无法终止系统关机,因为没有进行中的关机操作。1117 由于 I/O 设备出现错误,无法运行该请求。1118 串行设备初始化失败。将卸载串行驱动程序。1119 无法打开正与其他设备共享中断请求 (IRQ) 的设备。至少有一个使用该 IRQ 的设备已经打开。1120 由于再次写入串行口,串行 I/O 操作已结束。(IOCTL_SERIAL_XOFF_COUNTER 为零。)1121 由于超时,串行 I/O 操作已结束。 (IOCTL_SERIAL_XOFF_COUNTER 未达到零。)1122 在软盘上找不到标识符地址标记。1123 软盘扇区标识符字段与软盘控制器磁道地址不匹配。1124 软盘控制器报告软盘驱动程序不能识别的错误。1125 软盘控制器返回的结果和注册的不一致。1126 访问硬盘时,再校准操作失败,再试一次后也无法操作。1127 访问硬盘时,磁盘操作失败,再试一次后仍没有作用。1128 访问硬盘时,需要重启动磁盘控制器,但仍未成功。1129 磁带已卷到尽头。1130 可用的服务器存储区不足,无法执行该命令。1131 检测到潜在的死锁情况。1132 指定的基址或文件偏移量没有正确对齐。1140 试图更改系统电源状态的操作被另一应用程序或驱动程序禁止。1141 系统 BIOS 无法更改系统电源状态。1142 试图在一文件上创建超过系统允许数额的链接。1150 指定的程序需要新的 Windows 版本。1151 指定的程序不是 Windows 或 MS-DOS 程序。1152 无法启动指定程序的多个实例。1153 指定的程序是为 Windows 的早期版本编写的。1154 运行此应用程序所需的某个库文件已损。1155 没有应用程序与该操作中所指定的文件关联。1156 将命令发送到应用程序时出现错误。1157 找不到运行此应用程序所需的某个库文件。1158 当前进程已使用了 Window 管理器对象的系统允许的所有句柄。1159 消息只能与同步操作一起使用。1160 指出的源元素没有媒体。1161 指出的目标元素已包含媒体。1162 指出的元素不存在。1163 指出的元素是未显示的存储资源的一部分。1164 指出的设备需要重新初始化,因为硬件有错误。1165 设备显示在尝试进一步操作之前需要清除。1166 设备显示它的门仍是打开状态。1167 设备没有连接。1168 找不到元素。1169 索引中没有同指定项相匹配的项。1170 在对象上不存在指定的属性集。1171 传递到 GetMouseMovePoints 的点不在缓冲区中。1172 跟踪(工作站)服务没运行。1173 找不到卷 ID。1175 无法删除要被替换的文件。1176 无法将替换文件移到要被替换的文件。要被替换的文件保持原来的名称。1177 无法将替换文件移到要被替换的文件。要被替换的文件已被重新命名为备份名称。1178 卷更改记录被删除。1179 卷更改记录服务不处于活动中。1180 找到一份文件,但是可能不是正确的文件。1181 日志项已从日志中删除。1200 指定的设备名无效。1201 设备当前虽然未连接,但它是记忆连接。1202 试图记起已经记住的设备。1203 网络供应商不接受给定的网络路径。1204 指定的网络供应商名无效。1205 无法打开网络连接配置文件。1206 网络连接配置文件已损坏。1207 无法列举非包容类。1208 出现扩展错误。1209 指定组名的格式无效。1210 指定计算机名的格式无效。1211 指定事件名的格式无效。1212 指定域名的格式无效。1213 指定服务名的格式无效。1214 指定网络名的格式无效。1215 指定共享名的格式无效。1216 指定密码的格式无效。1217 指定的邮件名无效。1218 指定邮件目的地的格式无效。1219 所提供的凭据与现有凭据设置冲突。1220 试图与网络服务器建立会话,但与该服务器建立的会话太多。1221 网络上的其他计算机已经使用该工作组或域名。1222 网络不存在或者没有启动。1223 用户已经取消该操作。1224 所要求的操作无法在已经打开用户映射区域的文件中运行。1225 远程系统拒绝网络连接。1226 已经关闭网络连接。1227 网络传输的终点已经有一个地址与其关联。1228 网络终点尚未与地址关联。1229 试图在不存在的网络连接中操作。1230 试图在活动的网络连接上进行无效操作。1231-1233不能访问网络位置。有关网络疑难解答的信息,请参阅 Windows 帮助。1234 远程系统的目标网络端点没有运行任何服务。1235 该请求已经终止。1236 本地系统已经终止网络连接。1237 无法完成操作。请再试一次。1238 无法创建到该服务器的连接,因为已经到达了该帐户同时连接的最大数目。1239 试图在该帐户未授权的时间内登录。1240 尚未授权此帐户从该站登录网络。1241 网络地址无法用于要求的操作。1242 服务已经注册。1243 指定的服务不存在。1244 由于尚未验证用户身份,无法执行要求的操作。1245 由于用户尚未登录网络,无法运行要求的操作。指定的服务不存在。1246 继续工作。1247 完成初始化操作后,试图再次运行初始化操作。1248 没有其他本地设备。1249 指定的站点不存在。1250 具有指定名称的域控制器已经存在。1251 只有连接到服务器上时,才支持该操作。1252 即使没有改动,组策略框架也应该调用扩展。1253 指定的用户没有一个有效的配置文件。1254 Microsoft Small Business Server 不支持此操作。1300 不是对所有的调用方分配引用特权。1301 帐户名与安全标识符之间的映射未完成。1302 没有为该帐户明确地设置系统配额限制。1303 没有可用的密钥。返回已知的密钥。1304 密码太复杂,无法转换成 LAN Manager 密码。返回的 LAN Manager 密码是空字符串。1305 修订级别未知。1306 表示两个修订级别不兼容。1307 无法将此安全标识符指定为该对象的拥有者。1308 无法将此安全标识符指定为主要的对象组。1309 当前并未模拟客户的线程试图操作模拟令牌。1310 不可以禁用该组。1311 没有可用的登录服务器处理登录请求。1312 指定的登录会话不存在。该会话可能已终止。1313 指定的权限不存在。1314 客户不保留请求的权限。1315 提供的名称不是正确的帐户名称格式。1316 指定的用户已经存在。1317 指定的用户不存在。1318 指定的组已经存在。1319 指定的组不存在。1320 或者指定的用户帐户已经是某个特定组的成员,或者也可能指定的组非空而不能被删除。1321 指定的用户帐户不是所指定组帐户的成员。1322 上次保留的管理帐户无法关闭或删除。1323 无法更新密码。所输入的密码不正确。1324 无法更新密码。所提供的新密码包含不可用于密码的值。1325 无法更新密码。为新密码提供的值不符合字符域的长度、复杂性或历史要求。1326 登录失败: 用户名未知或密码错误。1327 登录失败: 用户帐户限制。1328 登录失败: 违反帐户登录时间限制。1329 登录失败: 禁止用户登录到该计算机上。1330 登录失败: 指定的帐户密码已过期。1331 登录失败: 当前禁用帐户。1332 未完成帐户名与安全性标识符之间的映射。1333 一次请求的本地用户标识符(LUID)太多。1334 没有其他可用的本地用户标识符(LUID)。1335 对这个特定使用来说,安全标识符的子部分是无效的。1336 访问控制清单(ACL)结构无效。1337 安全标识符结构无效。1338 安全描述符结构无效。1340 无法创建继承的访问控制列表(ACL)或访问控制项目(ACE)。1341 当前已禁用服务器。1342 当前已启用服务器。1343 所提供的值是无效的标识符授权值。1344 没有更多的内存用于更新安全信息。1345 指定的属性无效,或指定的属性与整个组的属性不兼容。1346 或者没有提供所申请的模仿级别,或者提供的模仿级别无效。1347 无法打开匿名级安全性符号。1348 所请求的验证信息类别无效。1349 该类符号不能以所尝试的方式使用。1350 无法在没有相关安全性的对象上运行安全操作。1351 未能从域控制器读取配置信息,或者是因为机器不可使用,或者是访问被拒绝。

1652919821114713 2019-12-02 00:43:41 0 浏览量 回答数 0

回答

http协议本身就是请求-响应, 不可能反向。所谓的服务器push其实核心依然是依靠浏览器主动发起请求,有两种方式,一种是js轮询请求,一种是长连接。 长连接指发送请求后,服务器不是立即响应而是等到有推送数据时在响应,如果中间超时,浏览器还要再发送请求过去。 ######回复 @Anger_Coder : 长连接是必须有线程的,否则无法同时处理多个长连接请求。发起方一定是用户端!不太明白你问的是什么意思?######没错,那可以理解为http虽然是tcp socket,但是短连接,无状态信息是吧,而且js轮询请求 是做在client端的;那么有没有可能,服务器端做无差别的消息发送,client端 做校验,那么无论动态模板还是静态页,都是没有常驻内存的,也就是类似于php那种脚本语言,没有线程、进程;那么长连接的建立 是当客户端发起连接请求开始的;那么对用户状态 如何 监控呢?######js定时执行 ######你好,用过js定时 用的是setInterval,但这个的前提是 客户端打开了浏览器,并且浏览器能执行js代码,发起者 还是客户端######可行的,反向ajax就是这么做的,只不过会使服务器的压力增大######回复 @Anger_Coder : 我也只是知道有这个东西,具体也没用过,哈哈######谢谢,我先了解下反向Ajax,不懂的话 在请教你######反向Ajax?即服务器Push。###### 这个就像osc的动弹嘛。osc用的是setTimeout来做的吧 dwr也可以,都可以看看 ######这叫服务器推送,可以百度一下: HTML5 Server-Sent Events和HTML5 WebSockets,不过这要求使用支持HTML5的浏览器,IE8及以下只能用客户端拉取了,就是长连接Long-polling。######好的,谢谢,我会了解相关的东东滴:)######XMPP?######可参考Html5的WebSocket技术######这个可以做,在服务器端和客户端之间保持一个连接,然后服务器端有跟新内容就像客户端写入,没有跟新的内容也不关闭连接。但是这样非常消耗性能,如此的话就只能采用折中的方法,每个连接保持一段时间,过了这段时间关闭,有新的请求过来的时候重新创建一个连接,如此循环######恩,了解,我先实现一个demo..感谢######用blazds向前段的swf文件推送数据,前端的swf文件你设置成不可见就可以了,然后将获取到的数据再传送给js调用,这样就不用考虑长链接或者websocket之类不同浏览器的特性了######swf在这个项目中 不适用了T_T

kun坤 2020-05-29 12:11:27 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 注意:无法打开网站时,应该先搜索排查报错提示的含义,本文列举了一些常见的报错情况。 无法访问 ECS 实例上的网站时的分析思路: 根据报错情况分析网络通信问题 ECS Linux 实例网络通信问题排查ECS Windows 实例网络通信问题排查 端口通信问题 ECS Linux 实例端口通信问题ECS Windows 实例端口通信问题 防火墙配置异常 ECS Windows 实例远程无法连接,关闭防火墙后连接恢复正常ECS Linux 实例 SSH 无法连接,关闭 Iptables 后连接恢复正常 重新配置安全组公网规则 网络通信问题 ECS Linux 实例网络通信问题排查 执行 ifconfig 和 ip addr 网络检测命令查看 IP 地址。 执行命令 route -n 通过实例路由表查看网关。 ECS Windows 实例网络通信问题排查 打开 CMD,执行 ipconfig 网络检测命令查看 IP 地址。 执行命令 route print 通过实例路由表查看网关。 注意: 若网卡驱动未开启或网卡配置有问题,请检查网卡驱动,并重新安装。 关于网络相关问题的测试工具,详见 ping 丢包或不通时链路测试说明。 端口通信问题 ECS Linux 实例端口通信问题 执行命令 netstat –antpu | grep sshd 检测 sshd 服务的运行状态,确认端口是否有正常监听。 执行下列命令查看服务运行状态: CentOS6:service sshd statusCentOS7:systemctl status sshd 如果 sshd 服务没有正常运行,执行下列命令手动启动 sshd 服务: CentOS6:service sshd restartCentOS7:systemctl restart sshd 查看 sshd 程序日志 如果无法正常启动 sshd 服务,CentOS 6 系统一般会直接输出错误信息,而CentOS 7 启动时没有输出信息,需要通过 secure 日志进行查看。sshd 日志:/var/log/secure。 通过 secure 日志的报错信息,一般是可以定位绝大部分 sshd 启动异常的问题。 ECS Windows 实例端口通信问题 执行远程端口检测命令: Tasklist /svc | findstr “Ter”netstat –ano | findstr “$PID” 防火墙配置异常 ECS Windows 实例远程无法连接,关闭防火墙后连接恢复正常 前提条件:您只有在已授权可关闭防火墙的情况下,才能做该项排查。 调整防火墙配置策略,详见:ECS Windows 远程连接之防火墙设置。 调整后,重新进行远程连接。 ECS Linux 实例 SSH 无法连接,关闭 Iptables 后连接恢复正常 前提条件:您只有在已授权可关闭 Iptables 的情况下,才能做调整 Iptables 配置策略排查。 执行命令 iptables -nvL –line-number 查看防火墙规则: n 不对 IP 地址进行反查,加上这个参数显示速度会快很多。 v 输出详细信息,包含通过该规则的数据包数量、总字节数及相应的网络接口。 L 查看当前表的所有规则,默认查看的是 filter 表,如果要查看 NAT 表,可以加上 -t NAT 参数。 修改规则。(若您之前已设置过规则策略,执行命令 cp -a /etc/sysconfig/iptables /etc/sysconfig/iptables.bak 保存一份原有的 Iptables 文件,避免丢失已设置过策略。) 执行命令 iptables -F 清空实例上所有的规则。 执行命令 iptables -P INPUT DROP 拒绝 INPUT 方向所有的请求都。 注意:线上业务请勿直接操作,会导致业务直接中断。 执行下列命令放行端口 22: iptables -A INPUT -p tcp --dport 22 -j ACCEPTiptables -A OUTPUT -p tcp --sport 22 -j ACCEPT执行下列命令指定 IP 访问端口 22: iptables -I INPUT -s 192.168.1.1 -p tcp --dport 22 -j ACCEPT 说明: 192.168.1.1 为请求端 IP 地址。 执行命令 iptables -L 查看添加的规则是否生效。 执行命令 iptables-save > /etc/sysconfig/iptables 保存添加的规则。 执行命令 service iptables restart 或 /etc/init.d/iptables restart 重启 Iptables。 执行命令 systemctl reboot 重启实例验证配置。 重新进行 SSH 连接。 重新配置安全组公网规则 原因分析:安全组默认没有放行网站使用的端口(如 80 端口)。您需要自行放行该接口。 解决方法: 登录 ECS 控制台,找到该实例。单击实例 ID,进入详情页,再单击本实例安全组 > 配置规则 >添加安全组规则。根据网站使用的端口配置新的安全组规则,放行网站使用的端口,最后单击确定。 可参考文档添加安全组规则。 根据报错情况分析 报错情况比较复杂,此处列出比较常见的几种报错内容: 403 报错:403 报错是一个大类,403 的报错基本上是权限问题,出现 403 报错时您需要检测权限配置问题。 403.1 错误是由于“执行”访问被禁止而造成的。若试图从目录中执行 CGI、ISAPI 或其他可执行程序,但该目录不允许执行程序时便会出现此种错误。403.2 错误是由于”读取”访问被禁止而造成的。导致此错误是由于没有可用的默认网页并且没有对目录启用目录浏览,或者要显示的 HTML 网页所驻留的目录仅标记为“可执行”或“脚本”权限。403.3 错误是由于“写入”访问被禁止而造成的。当试图将文件上载到目录或在目录中修改文件,但该目录不允许“写”访问时就会出现此种错误。403.4 错误是由于要求 SSL 而造成的。您必须在要查看的网页的地址中使用 HTTPS。403.5 错误是由于要求使用 128 位加密算法的 Web 浏览器而造成的。如果您的浏览器不支持 128 位加密算法就会出现这个错误,您可以连接微软网站进行浏览器升级。403.6 错误是由于 IP 地址被拒绝而造成的。如果服务器中有不能访问该站点的IP地址列表,并且您使用的 IP 地址在该列表中时您就会返回这条错误信息。403.7 错误是因为要求客户证书。当需要访问的资源要求浏览器拥有服务器能够识别的安全套接字层(SSL)客户证书时会返回此种错误。403.8 错误是由于禁止站点访问而造成的。若服务器中有不能访问该站点的 DNS 名称列表,而您使用的 DNS 名称在列表中时就会返回此种信息。请注意区别 403.6 与 403.8 错误。403.9 错误是由于连接的用户过多而造成的,由于 Web 服务器很忙,因通讯量过多而无法处理请求时便会返回这条错误。403.10 错误是由于无效配置而导致的错误。当您试图从目录中执行 CGI、ISAPI 或其他可执行程序,但该目录不允许执行程序时便会返回这条错误。403.11 错误是由于密码更改而导致无权查看页面。403.12 错误是由于映射器拒绝访问而造成的。若要查看的网页要求使用有效的客户证书,而您的客户证书映射没有权限访问该 Web 站点时就会返回映射器拒绝访问的错误。403.13 错误是由于需要查看的网页要求使用有效的客户证书而使用的客户证书已经被吊销,或者无法确定证书是否已吊销造成的。403.14 错误 Web 服务器被配置为不列出此目录的内容,拒绝目录列表。403.15 错误是由于客户访问许可过多而造成的。当服务器超出其客户访问许可限制时会返回此条错误。403.16 错误是由于客户证书不可信或者无效而造成的。403.17 错误是由于客户证书已经到期或者尚未生效而造成的。 404 报错:404 报错主要是页面显示问题或者页面的链接有问题,意味着链接指向的网页不存在,即原始网页的 URL 失效。当 Web 服务器接到类似请求时,会返回一个 404 状态码,告诉浏览器已请求的资源并不存在。导致这个错误的原因一般有以下几种情况: 无法在所请求的端口上访问 Web 站点。Web 服务扩展锁定策略阻止本请求。MIME 映射策略阻止本请求。网站更新改版,但某些局部板块沿用原来的模块,而原有的模块调用的文件已经被删除或转移了路径。跟踪访问的各类脚码或 CSS 文件无效但调用代码依然存在。某个目录直接删除(导致一段时间该目录的文件在被爬行时全部报 404 Not Found 错误)网页 URL 生成规则改变、网页文件更名或移动位置、导入链接拼写错误等,导致原来的 URL 地址无法访问 502 报错:当测试访问报错为 502 Bad Gateway,这是 Web 程序配置异常导致的。建议结合 Web 访问日志,检测一下 Web 程序配置的参数设置是否有异常。详情请参见 502 bad gateway问题的解决方法。503 报错:503 报错是一种 HTTP 状态码,与 404 同属一种网页状态出错码。两者的区别是:前者是服务器出错的一种返回状态,后者是网页程序没有相关结果后返回的一种状态。503 报错产生的原因有可能是以下几种情况: 网络管理员可能关闭应用程序池以执行维护。当请求到达时应用程序池队列已满。应用程序池标识没有使用预定义账户:网络服务。而自己配置了标识,但是配置的这个用户不属于 IIS_WPG 组。应用程序池启用了 CPU 监视,并且设置了 CPU 利用率超过一定百分比关闭应用程序池,而开发人员写的服务端页面 (.asp、.aspx) 执行效率不高,会引起 CPU 的长时间占用,最终达到设置的百分比,从而引起应用程序池关闭。应用程序池的性能选项卡的请求队列限制所填的数值太小,默认为 1000。某个目录直接删除(导致一段时间该目录的文件在被爬行时全部报 404 Not Found 错误)。网页 URL 生成规则改变、网页文件更名或移动位置、导入链接拼写错误等,导致原来的 URL 地址无法访问。该站点正在被攻击。对于最新型的攻击,其实是 DDoS 的一种派生,原理在于找数千个IP,同时向服务器的 Apache 发出请求,然后 立即断开,让 Apache 处于等待状态,致使 Apache 线程全部被填满,致使服务器死机。因此,为了保证大多数客户的利益,我们给每个空间,作出了每 19 秒 64 个 php 请求的限制。注意,是 php 请求,一般的图片请求和 html 请求不包括在内。该程序占用的 php 线程过多,有的程序没有进行好优化处理,一个点击即可产生数个,甚至数十个 php 线程。这样的话,几个点击就可以把该时段的64个 php 线程全部填满了。因此出现 503 错误。建议优化一下程序,尽量少用 require (请求)等语句。 如问题还未解决,请您记录排查结果、相关日志信息或截图,提交工单联系阿里云。

2019-12-01 23:11:56 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 注意:无法打开网站时,应该先搜索排查报错提示的含义,本文列举了一些常见的报错情况。 无法访问 ECS 实例上的网站时的分析思路: 根据报错情况分析网络通信问题 ECS Linux 实例网络通信问题排查ECS Windows 实例网络通信问题排查 端口通信问题 ECS Linux 实例端口通信问题ECS Windows 实例端口通信问题 防火墙配置异常 ECS Windows 实例远程无法连接,关闭防火墙后连接恢复正常ECS Linux 实例 SSH 无法连接,关闭 Iptables 后连接恢复正常 重新配置安全组公网规则 网络通信问题 ECS Linux 实例网络通信问题排查 执行 ifconfig 和 ip addr 网络检测命令查看 IP 地址。 执行命令 route -n 通过实例路由表查看网关。 ECS Windows 实例网络通信问题排查 打开 CMD,执行 ipconfig 网络检测命令查看 IP 地址。 执行命令 route print 通过实例路由表查看网关。 注意: 若网卡驱动未开启或网卡配置有问题,请检查网卡驱动,并重新安装。 关于网络相关问题的测试工具,详见 ping 丢包或不通时链路测试说明。 端口通信问题 ECS Linux 实例端口通信问题 执行命令 netstat –antpu | grep sshd 检测 sshd 服务的运行状态,确认端口是否有正常监听。 执行下列命令查看服务运行状态: CentOS6:service sshd statusCentOS7:systemctl status sshd 如果 sshd 服务没有正常运行,执行下列命令手动启动 sshd 服务: CentOS6:service sshd restartCentOS7:systemctl restart sshd 查看 sshd 程序日志 如果无法正常启动 sshd 服务,CentOS 6 系统一般会直接输出错误信息,而CentOS 7 启动时没有输出信息,需要通过 secure 日志进行查看。sshd 日志:/var/log/secure。 通过 secure 日志的报错信息,一般是可以定位绝大部分 sshd 启动异常的问题。 ECS Windows 实例端口通信问题 执行远程端口检测命令: Tasklist /svc | findstr “Ter”netstat –ano | findstr “$PID” 防火墙配置异常 ECS Windows 实例远程无法连接,关闭防火墙后连接恢复正常 前提条件:您只有在已授权可关闭防火墙的情况下,才能做该项排查。 调整防火墙配置策略,详见:ECS Windows 远程连接之防火墙设置。 调整后,重新进行远程连接。 ECS Linux 实例 SSH 无法连接,关闭 Iptables 后连接恢复正常 前提条件:您只有在已授权可关闭 Iptables 的情况下,才能做调整 Iptables 配置策略排查。 执行命令 iptables -nvL –line-number 查看防火墙规则: n 不对 IP 地址进行反查,加上这个参数显示速度会快很多。 v 输出详细信息,包含通过该规则的数据包数量、总字节数及相应的网络接口。 L 查看当前表的所有规则,默认查看的是 filter 表,如果要查看 NAT 表,可以加上 -t NAT 参数。 修改规则。(若您之前已设置过规则策略,执行命令 cp -a /etc/sysconfig/iptables /etc/sysconfig/iptables.bak 保存一份原有的 Iptables 文件,避免丢失已设置过策略。) 执行命令 iptables -F 清空实例上所有的规则。 执行命令 iptables -P INPUT DROP 拒绝 INPUT 方向所有的请求都。 注意:线上业务请勿直接操作,会导致业务直接中断。 执行下列命令放行端口 22: iptables -A INPUT -p tcp --dport 22 -j ACCEPTiptables -A OUTPUT -p tcp --sport 22 -j ACCEPT执行下列命令指定 IP 访问端口 22: iptables -I INPUT -s 192.168.1.1 -p tcp --dport 22 -j ACCEPT 说明: 192.168.1.1 为请求端 IP 地址。 执行命令 iptables -L 查看添加的规则是否生效。 执行命令 iptables-save > /etc/sysconfig/iptables 保存添加的规则。 执行命令 service iptables restart 或 /etc/init.d/iptables restart 重启 Iptables。 执行命令 systemctl reboot 重启实例验证配置。 重新进行 SSH 连接。 重新配置安全组公网规则 原因分析:安全组默认没有放行网站使用的端口(如 80 端口)。您需要自行放行该接口。 解决方法: 登录 ECS 控制台,找到该实例。单击实例 ID,进入详情页,再单击本实例安全组 > 配置规则 >添加安全组规则。根据网站使用的端口配置新的安全组规则,放行网站使用的端口,最后单击确定。 可参考文档添加安全组规则。 根据报错情况分析 报错情况比较复杂,此处列出比较常见的几种报错内容: 403 报错:403 报错是一个大类,403 的报错基本上是权限问题,出现 403 报错时您需要检测权限配置问题。 403.1 错误是由于“执行”访问被禁止而造成的。若试图从目录中执行 CGI、ISAPI 或其他可执行程序,但该目录不允许执行程序时便会出现此种错误。403.2 错误是由于”读取”访问被禁止而造成的。导致此错误是由于没有可用的默认网页并且没有对目录启用目录浏览,或者要显示的 HTML 网页所驻留的目录仅标记为“可执行”或“脚本”权限。403.3 错误是由于“写入”访问被禁止而造成的。当试图将文件上载到目录或在目录中修改文件,但该目录不允许“写”访问时就会出现此种错误。403.4 错误是由于要求 SSL 而造成的。您必须在要查看的网页的地址中使用 HTTPS。403.5 错误是由于要求使用 128 位加密算法的 Web 浏览器而造成的。如果您的浏览器不支持 128 位加密算法就会出现这个错误,您可以连接微软网站进行浏览器升级。403.6 错误是由于 IP 地址被拒绝而造成的。如果服务器中有不能访问该站点的IP地址列表,并且您使用的 IP 地址在该列表中时您就会返回这条错误信息。403.7 错误是因为要求客户证书。当需要访问的资源要求浏览器拥有服务器能够识别的安全套接字层(SSL)客户证书时会返回此种错误。403.8 错误是由于禁止站点访问而造成的。若服务器中有不能访问该站点的 DNS 名称列表,而您使用的 DNS 名称在列表中时就会返回此种信息。请注意区别 403.6 与 403.8 错误。403.9 错误是由于连接的用户过多而造成的,由于 Web 服务器很忙,因通讯量过多而无法处理请求时便会返回这条错误。403.10 错误是由于无效配置而导致的错误。当您试图从目录中执行 CGI、ISAPI 或其他可执行程序,但该目录不允许执行程序时便会返回这条错误。403.11 错误是由于密码更改而导致无权查看页面。403.12 错误是由于映射器拒绝访问而造成的。若要查看的网页要求使用有效的客户证书,而您的客户证书映射没有权限访问该 Web 站点时就会返回映射器拒绝访问的错误。403.13 错误是由于需要查看的网页要求使用有效的客户证书而使用的客户证书已经被吊销,或者无法确定证书是否已吊销造成的。403.14 错误 Web 服务器被配置为不列出此目录的内容,拒绝目录列表。403.15 错误是由于客户访问许可过多而造成的。当服务器超出其客户访问许可限制时会返回此条错误。403.16 错误是由于客户证书不可信或者无效而造成的。403.17 错误是由于客户证书已经到期或者尚未生效而造成的。 404 报错:404 报错主要是页面显示问题或者页面的链接有问题,意味着链接指向的网页不存在,即原始网页的 URL 失效。当 Web 服务器接到类似请求时,会返回一个 404 状态码,告诉浏览器已请求的资源并不存在。导致这个错误的原因一般有以下几种情况: 无法在所请求的端口上访问 Web 站点。Web 服务扩展锁定策略阻止本请求。MIME 映射策略阻止本请求。网站更新改版,但某些局部板块沿用原来的模块,而原有的模块调用的文件已经被删除或转移了路径。跟踪访问的各类脚码或 CSS 文件无效但调用代码依然存在。某个目录直接删除(导致一段时间该目录的文件在被爬行时全部报 404 Not Found 错误)网页 URL 生成规则改变、网页文件更名或移动位置、导入链接拼写错误等,导致原来的 URL 地址无法访问 502 报错:当测试访问报错为 502 Bad Gateway,这是 Web 程序配置异常导致的。建议结合 Web 访问日志,检测一下 Web 程序配置的参数设置是否有异常。详情请参见 502 bad gateway问题的解决方法。503 报错:503 报错是一种 HTTP 状态码,与 404 同属一种网页状态出错码。两者的区别是:前者是服务器出错的一种返回状态,后者是网页程序没有相关结果后返回的一种状态。503 报错产生的原因有可能是以下几种情况: 网络管理员可能关闭应用程序池以执行维护。当请求到达时应用程序池队列已满。应用程序池标识没有使用预定义账户:网络服务。而自己配置了标识,但是配置的这个用户不属于 IIS_WPG 组。应用程序池启用了 CPU 监视,并且设置了 CPU 利用率超过一定百分比关闭应用程序池,而开发人员写的服务端页面 (.asp、.aspx) 执行效率不高,会引起 CPU 的长时间占用,最终达到设置的百分比,从而引起应用程序池关闭。应用程序池的性能选项卡的请求队列限制所填的数值太小,默认为 1000。某个目录直接删除(导致一段时间该目录的文件在被爬行时全部报 404 Not Found 错误)。网页 URL 生成规则改变、网页文件更名或移动位置、导入链接拼写错误等,导致原来的 URL 地址无法访问。该站点正在被攻击。对于最新型的攻击,其实是 DDoS 的一种派生,原理在于找数千个IP,同时向服务器的 Apache 发出请求,然后 立即断开,让 Apache 处于等待状态,致使 Apache 线程全部被填满,致使服务器死机。因此,为了保证大多数客户的利益,我们给每个空间,作出了每 19 秒 64 个 php 请求的限制。注意,是 php 请求,一般的图片请求和 html 请求不包括在内。该程序占用的 php 线程过多,有的程序没有进行好优化处理,一个点击即可产生数个,甚至数十个 php 线程。这样的话,几个点击就可以把该时段的64个 php 线程全部填满了。因此出现 503 错误。建议优化一下程序,尽量少用 require (请求)等语句。 如问题还未解决,请您记录排查结果、相关日志信息或截图,提交工单联系阿里云。

2019-12-01 23:11:57 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 注意:无法打开网站时,应该先搜索排查报错提示的含义,本文列举了一些常见的报错情况。 无法访问 ECS 实例上的网站时的分析思路: 根据报错情况分析网络通信问题 ECS Linux 实例网络通信问题排查ECS Windows 实例网络通信问题排查 端口通信问题 ECS Linux 实例端口通信问题ECS Windows 实例端口通信问题 防火墙配置异常 ECS Windows 实例远程无法连接,关闭防火墙后连接恢复正常ECS Linux 实例 SSH 无法连接,关闭 Iptables 后连接恢复正常 重新配置安全组公网规则 网络通信问题 ECS Linux 实例网络通信问题排查 执行 ifconfig 和 ip addr 网络检测命令查看 IP 地址。 执行命令 route -n 通过实例路由表查看网关。 ECS Windows 实例网络通信问题排查 打开 CMD,执行 ipconfig 网络检测命令查看 IP 地址。 执行命令 route print 通过实例路由表查看网关。 注意: 若网卡驱动未开启或网卡配置有问题,请检查网卡驱动,并重新安装。 关于网络相关问题的测试工具,详见 ping 丢包或不通时链路测试说明。 端口通信问题 ECS Linux 实例端口通信问题 执行命令 netstat –antpu | grep sshd 检测 sshd 服务的运行状态,确认端口是否有正常监听。 执行下列命令查看服务运行状态: CentOS6:service sshd statusCentOS7:systemctl status sshd 如果 sshd 服务没有正常运行,执行下列命令手动启动 sshd 服务: CentOS6:service sshd restartCentOS7:systemctl restart sshd 查看 sshd 程序日志 如果无法正常启动 sshd 服务,CentOS 6 系统一般会直接输出错误信息,而CentOS 7 启动时没有输出信息,需要通过 secure 日志进行查看。sshd 日志:/var/log/secure。 通过 secure 日志的报错信息,一般是可以定位绝大部分 sshd 启动异常的问题。 ECS Windows 实例端口通信问题 执行远程端口检测命令: Tasklist /svc | findstr “Ter”netstat –ano | findstr “$PID” 防火墙配置异常 ECS Windows 实例远程无法连接,关闭防火墙后连接恢复正常 前提条件:您只有在已授权可关闭防火墙的情况下,才能做该项排查。 调整防火墙配置策略,详见:ECS Windows 远程连接之防火墙设置。 调整后,重新进行远程连接。 ECS Linux 实例 SSH 无法连接,关闭 Iptables 后连接恢复正常 前提条件:您只有在已授权可关闭 Iptables 的情况下,才能做调整 Iptables 配置策略排查。 执行命令 iptables -nvL –line-number 查看防火墙规则: n 不对 IP 地址进行反查,加上这个参数显示速度会快很多。 v 输出详细信息,包含通过该规则的数据包数量、总字节数及相应的网络接口。 L 查看当前表的所有规则,默认查看的是 filter 表,如果要查看 NAT 表,可以加上 -t NAT 参数。 修改规则。(若您之前已设置过规则策略,执行命令 cp -a /etc/sysconfig/iptables /etc/sysconfig/iptables.bak 保存一份原有的 Iptables 文件,避免丢失已设置过策略。) 执行命令 iptables -F 清空实例上所有的规则。 执行命令 iptables -P INPUT DROP 拒绝 INPUT 方向所有的请求都。 注意:线上业务请勿直接操作,会导致业务直接中断。 执行下列命令放行端口 22: iptables -A INPUT -p tcp --dport 22 -j ACCEPTiptables -A OUTPUT -p tcp --sport 22 -j ACCEPT执行下列命令指定 IP 访问端口 22: iptables -I INPUT -s 192.168.1.1 -p tcp --dport 22 -j ACCEPT 说明: 192.168.1.1 为请求端 IP 地址。 执行命令 iptables -L 查看添加的规则是否生效。 执行命令 iptables-save > /etc/sysconfig/iptables 保存添加的规则。 执行命令 service iptables restart 或 /etc/init.d/iptables restart 重启 Iptables。 执行命令 systemctl reboot 重启实例验证配置。 重新进行 SSH 连接。 重新配置安全组公网规则 原因分析:安全组默认没有放行网站使用的端口(如 80 端口)。您需要自行放行该接口。 解决方法: 登录 ECS 控制台,找到该实例。单击实例 ID,进入详情页,再单击本实例安全组 > 配置规则 >添加安全组规则。根据网站使用的端口配置新的安全组规则,放行网站使用的端口,最后单击确定。 可参考文档添加安全组规则。 根据报错情况分析 报错情况比较复杂,此处列出比较常见的几种报错内容: 403 报错:403 报错是一个大类,403 的报错基本上是权限问题,出现 403 报错时您需要检测权限配置问题。 403.1 错误是由于“执行”访问被禁止而造成的。若试图从目录中执行 CGI、ISAPI 或其他可执行程序,但该目录不允许执行程序时便会出现此种错误。403.2 错误是由于”读取”访问被禁止而造成的。导致此错误是由于没有可用的默认网页并且没有对目录启用目录浏览,或者要显示的 HTML 网页所驻留的目录仅标记为“可执行”或“脚本”权限。403.3 错误是由于“写入”访问被禁止而造成的。当试图将文件上载到目录或在目录中修改文件,但该目录不允许“写”访问时就会出现此种错误。403.4 错误是由于要求 SSL 而造成的。您必须在要查看的网页的地址中使用 HTTPS。403.5 错误是由于要求使用 128 位加密算法的 Web 浏览器而造成的。如果您的浏览器不支持 128 位加密算法就会出现这个错误,您可以连接微软网站进行浏览器升级。403.6 错误是由于 IP 地址被拒绝而造成的。如果服务器中有不能访问该站点的IP地址列表,并且您使用的 IP 地址在该列表中时您就会返回这条错误信息。403.7 错误是因为要求客户证书。当需要访问的资源要求浏览器拥有服务器能够识别的安全套接字层(SSL)客户证书时会返回此种错误。403.8 错误是由于禁止站点访问而造成的。若服务器中有不能访问该站点的 DNS 名称列表,而您使用的 DNS 名称在列表中时就会返回此种信息。请注意区别 403.6 与 403.8 错误。403.9 错误是由于连接的用户过多而造成的,由于 Web 服务器很忙,因通讯量过多而无法处理请求时便会返回这条错误。403.10 错误是由于无效配置而导致的错误。当您试图从目录中执行 CGI、ISAPI 或其他可执行程序,但该目录不允许执行程序时便会返回这条错误。403.11 错误是由于密码更改而导致无权查看页面。403.12 错误是由于映射器拒绝访问而造成的。若要查看的网页要求使用有效的客户证书,而您的客户证书映射没有权限访问该 Web 站点时就会返回映射器拒绝访问的错误。403.13 错误是由于需要查看的网页要求使用有效的客户证书而使用的客户证书已经被吊销,或者无法确定证书是否已吊销造成的。403.14 错误 Web 服务器被配置为不列出此目录的内容,拒绝目录列表。403.15 错误是由于客户访问许可过多而造成的。当服务器超出其客户访问许可限制时会返回此条错误。403.16 错误是由于客户证书不可信或者无效而造成的。403.17 错误是由于客户证书已经到期或者尚未生效而造成的。 404 报错:404 报错主要是页面显示问题或者页面的链接有问题,意味着链接指向的网页不存在,即原始网页的 URL 失效。当 Web 服务器接到类似请求时,会返回一个 404 状态码,告诉浏览器已请求的资源并不存在。导致这个错误的原因一般有以下几种情况: 无法在所请求的端口上访问 Web 站点。Web 服务扩展锁定策略阻止本请求。MIME 映射策略阻止本请求。网站更新改版,但某些局部板块沿用原来的模块,而原有的模块调用的文件已经被删除或转移了路径。跟踪访问的各类脚码或 CSS 文件无效但调用代码依然存在。某个目录直接删除(导致一段时间该目录的文件在被爬行时全部报 404 Not Found 错误)网页 URL 生成规则改变、网页文件更名或移动位置、导入链接拼写错误等,导致原来的 URL 地址无法访问 502 报错:当测试访问报错为 502 Bad Gateway,这是 Web 程序配置异常导致的。建议结合 Web 访问日志,检测一下 Web 程序配置的参数设置是否有异常。详情请参见 502 bad gateway问题的解决方法。503 报错:503 报错是一种 HTTP 状态码,与 404 同属一种网页状态出错码。两者的区别是:前者是服务器出错的一种返回状态,后者是网页程序没有相关结果后返回的一种状态。503 报错产生的原因有可能是以下几种情况: 网络管理员可能关闭应用程序池以执行维护。当请求到达时应用程序池队列已满。应用程序池标识没有使用预定义账户:网络服务。而自己配置了标识,但是配置的这个用户不属于 IIS_WPG 组。应用程序池启用了 CPU 监视,并且设置了 CPU 利用率超过一定百分比关闭应用程序池,而开发人员写的服务端页面 (.asp、.aspx) 执行效率不高,会引起 CPU 的长时间占用,最终达到设置的百分比,从而引起应用程序池关闭。应用程序池的性能选项卡的请求队列限制所填的数值太小,默认为 1000。某个目录直接删除(导致一段时间该目录的文件在被爬行时全部报 404 Not Found 错误)。网页 URL 生成规则改变、网页文件更名或移动位置、导入链接拼写错误等,导致原来的 URL 地址无法访问。该站点正在被攻击。对于最新型的攻击,其实是 DDoS 的一种派生,原理在于找数千个IP,同时向服务器的 Apache 发出请求,然后 立即断开,让 Apache 处于等待状态,致使 Apache 线程全部被填满,致使服务器死机。因此,为了保证大多数客户的利益,我们给每个空间,作出了每 19 秒 64 个 php 请求的限制。注意,是 php 请求,一般的图片请求和 html 请求不包括在内。该程序占用的 php 线程过多,有的程序没有进行好优化处理,一个点击即可产生数个,甚至数十个 php 线程。这样的话,几个点击就可以把该时段的64个 php 线程全部填满了。因此出现 503 错误。建议优化一下程序,尽量少用 require (请求)等语句。 如问题还未解决,请您记录排查结果、相关日志信息或截图,提交工单联系阿里云。

2019-12-01 23:11:56 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 注意:无法打开网站时,应该先搜索排查报错提示的含义,本文列举了一些常见的报错情况。 无法访问 ECS 实例上的网站时的分析思路: 根据报错情况分析网络通信问题 ECS Linux 实例网络通信问题排查ECS Windows 实例网络通信问题排查 端口通信问题 ECS Linux 实例端口通信问题ECS Windows 实例端口通信问题 防火墙配置异常 ECS Windows 实例远程无法连接,关闭防火墙后连接恢复正常ECS Linux 实例 SSH 无法连接,关闭 Iptables 后连接恢复正常 重新配置安全组公网规则 网络通信问题 ECS Linux 实例网络通信问题排查 执行 ifconfig 和 ip addr 网络检测命令查看 IP 地址。 执行命令 route -n 通过实例路由表查看网关。 ECS Windows 实例网络通信问题排查 打开 CMD,执行 ipconfig 网络检测命令查看 IP 地址。 执行命令 route print 通过实例路由表查看网关。 注意: 若网卡驱动未开启或网卡配置有问题,请检查网卡驱动,并重新安装。 关于网络相关问题的测试工具,详见 ping 丢包或不通时链路测试说明。 端口通信问题 ECS Linux 实例端口通信问题 执行命令 netstat –antpu | grep sshd 检测 sshd 服务的运行状态,确认端口是否有正常监听。 执行下列命令查看服务运行状态: CentOS6:service sshd statusCentOS7:systemctl status sshd 如果 sshd 服务没有正常运行,执行下列命令手动启动 sshd 服务: CentOS6:service sshd restartCentOS7:systemctl restart sshd 查看 sshd 程序日志 如果无法正常启动 sshd 服务,CentOS 6 系统一般会直接输出错误信息,而CentOS 7 启动时没有输出信息,需要通过 secure 日志进行查看。sshd 日志:/var/log/secure。 通过 secure 日志的报错信息,一般是可以定位绝大部分 sshd 启动异常的问题。 ECS Windows 实例端口通信问题 执行远程端口检测命令: Tasklist /svc | findstr “Ter”netstat –ano | findstr “$PID” 防火墙配置异常 ECS Windows 实例远程无法连接,关闭防火墙后连接恢复正常 前提条件:您只有在已授权可关闭防火墙的情况下,才能做该项排查。 调整防火墙配置策略,详见:ECS Windows 远程连接之防火墙设置。 调整后,重新进行远程连接。 ECS Linux 实例 SSH 无法连接,关闭 Iptables 后连接恢复正常 前提条件:您只有在已授权可关闭 Iptables 的情况下,才能做调整 Iptables 配置策略排查。 执行命令 iptables -nvL –line-number 查看防火墙规则: n 不对 IP 地址进行反查,加上这个参数显示速度会快很多。 v 输出详细信息,包含通过该规则的数据包数量、总字节数及相应的网络接口。 L 查看当前表的所有规则,默认查看的是 filter 表,如果要查看 NAT 表,可以加上 -t NAT 参数。 修改规则。(若您之前已设置过规则策略,执行命令 cp -a /etc/sysconfig/iptables /etc/sysconfig/iptables.bak 保存一份原有的 Iptables 文件,避免丢失已设置过策略。) 执行命令 iptables -F 清空实例上所有的规则。 执行命令 iptables -P INPUT DROP 拒绝 INPUT 方向所有的请求都。 注意:线上业务请勿直接操作,会导致业务直接中断。 执行下列命令放行端口 22: iptables -A INPUT -p tcp --dport 22 -j ACCEPTiptables -A OUTPUT -p tcp --sport 22 -j ACCEPT执行下列命令指定 IP 访问端口 22: iptables -I INPUT -s 192.168.1.1 -p tcp --dport 22 -j ACCEPT 说明: 192.168.1.1 为请求端 IP 地址。 执行命令 iptables -L 查看添加的规则是否生效。 执行命令 iptables-save > /etc/sysconfig/iptables 保存添加的规则。 执行命令 service iptables restart 或 /etc/init.d/iptables restart 重启 Iptables。 执行命令 systemctl reboot 重启实例验证配置。 重新进行 SSH 连接。 重新配置安全组公网规则 原因分析:安全组默认没有放行网站使用的端口(如 80 端口)。您需要自行放行该接口。 解决方法: 登录 ECS 控制台,找到该实例。单击实例 ID,进入详情页,再单击本实例安全组 > 配置规则 >添加安全组规则。根据网站使用的端口配置新的安全组规则,放行网站使用的端口,最后单击确定。 可参考文档添加安全组规则。 根据报错情况分析 报错情况比较复杂,此处列出比较常见的几种报错内容: 403 报错:403 报错是一个大类,403 的报错基本上是权限问题,出现 403 报错时您需要检测权限配置问题。 403.1 错误是由于“执行”访问被禁止而造成的。若试图从目录中执行 CGI、ISAPI 或其他可执行程序,但该目录不允许执行程序时便会出现此种错误。403.2 错误是由于”读取”访问被禁止而造成的。导致此错误是由于没有可用的默认网页并且没有对目录启用目录浏览,或者要显示的 HTML 网页所驻留的目录仅标记为“可执行”或“脚本”权限。403.3 错误是由于“写入”访问被禁止而造成的。当试图将文件上载到目录或在目录中修改文件,但该目录不允许“写”访问时就会出现此种错误。403.4 错误是由于要求 SSL 而造成的。您必须在要查看的网页的地址中使用 HTTPS。403.5 错误是由于要求使用 128 位加密算法的 Web 浏览器而造成的。如果您的浏览器不支持 128 位加密算法就会出现这个错误,您可以连接微软网站进行浏览器升级。403.6 错误是由于 IP 地址被拒绝而造成的。如果服务器中有不能访问该站点的IP地址列表,并且您使用的 IP 地址在该列表中时您就会返回这条错误信息。403.7 错误是因为要求客户证书。当需要访问的资源要求浏览器拥有服务器能够识别的安全套接字层(SSL)客户证书时会返回此种错误。403.8 错误是由于禁止站点访问而造成的。若服务器中有不能访问该站点的 DNS 名称列表,而您使用的 DNS 名称在列表中时就会返回此种信息。请注意区别 403.6 与 403.8 错误。403.9 错误是由于连接的用户过多而造成的,由于 Web 服务器很忙,因通讯量过多而无法处理请求时便会返回这条错误。403.10 错误是由于无效配置而导致的错误。当您试图从目录中执行 CGI、ISAPI 或其他可执行程序,但该目录不允许执行程序时便会返回这条错误。403.11 错误是由于密码更改而导致无权查看页面。403.12 错误是由于映射器拒绝访问而造成的。若要查看的网页要求使用有效的客户证书,而您的客户证书映射没有权限访问该 Web 站点时就会返回映射器拒绝访问的错误。403.13 错误是由于需要查看的网页要求使用有效的客户证书而使用的客户证书已经被吊销,或者无法确定证书是否已吊销造成的。403.14 错误 Web 服务器被配置为不列出此目录的内容,拒绝目录列表。403.15 错误是由于客户访问许可过多而造成的。当服务器超出其客户访问许可限制时会返回此条错误。403.16 错误是由于客户证书不可信或者无效而造成的。403.17 错误是由于客户证书已经到期或者尚未生效而造成的。 404 报错:404 报错主要是页面显示问题或者页面的链接有问题,意味着链接指向的网页不存在,即原始网页的 URL 失效。当 Web 服务器接到类似请求时,会返回一个 404 状态码,告诉浏览器已请求的资源并不存在。导致这个错误的原因一般有以下几种情况: 无法在所请求的端口上访问 Web 站点。Web 服务扩展锁定策略阻止本请求。MIME 映射策略阻止本请求。网站更新改版,但某些局部板块沿用原来的模块,而原有的模块调用的文件已经被删除或转移了路径。跟踪访问的各类脚码或 CSS 文件无效但调用代码依然存在。某个目录直接删除(导致一段时间该目录的文件在被爬行时全部报 404 Not Found 错误)网页 URL 生成规则改变、网页文件更名或移动位置、导入链接拼写错误等,导致原来的 URL 地址无法访问 502 报错:当测试访问报错为 502 Bad Gateway,这是 Web 程序配置异常导致的。建议结合 Web 访问日志,检测一下 Web 程序配置的参数设置是否有异常。详情请参见 502 bad gateway问题的解决方法。503 报错:503 报错是一种 HTTP 状态码,与 404 同属一种网页状态出错码。两者的区别是:前者是服务器出错的一种返回状态,后者是网页程序没有相关结果后返回的一种状态。503 报错产生的原因有可能是以下几种情况: 网络管理员可能关闭应用程序池以执行维护。当请求到达时应用程序池队列已满。应用程序池标识没有使用预定义账户:网络服务。而自己配置了标识,但是配置的这个用户不属于 IIS_WPG 组。应用程序池启用了 CPU 监视,并且设置了 CPU 利用率超过一定百分比关闭应用程序池,而开发人员写的服务端页面 (.asp、.aspx) 执行效率不高,会引起 CPU 的长时间占用,最终达到设置的百分比,从而引起应用程序池关闭。应用程序池的性能选项卡的请求队列限制所填的数值太小,默认为 1000。某个目录直接删除(导致一段时间该目录的文件在被爬行时全部报 404 Not Found 错误)。网页 URL 生成规则改变、网页文件更名或移动位置、导入链接拼写错误等,导致原来的 URL 地址无法访问。该站点正在被攻击。对于最新型的攻击,其实是 DDoS 的一种派生,原理在于找数千个IP,同时向服务器的 Apache 发出请求,然后 立即断开,让 Apache 处于等待状态,致使 Apache 线程全部被填满,致使服务器死机。因此,为了保证大多数客户的利益,我们给每个空间,作出了每 19 秒 64 个 php 请求的限制。注意,是 php 请求,一般的图片请求和 html 请求不包括在内。该程序占用的 php 线程过多,有的程序没有进行好优化处理,一个点击即可产生数个,甚至数十个 php 线程。这样的话,几个点击就可以把该时段的64个 php 线程全部填满了。因此出现 503 错误。建议优化一下程序,尽量少用 require (请求)等语句。 如问题还未解决,请您记录排查结果、相关日志信息或截图,提交工单联系阿里云。

2019-12-01 23:11:57 0 浏览量 回答数 0

回答

nginx的静态页面都进不去的话应该是OS的TCP出了问题吧,要不看看你这个服务器当前的文件描述符数量`ulimit -n`。######回复 @snailkky : 解决了没?是这个原因吗?######回复 @口口口S口口口 : 真是太感谢你了! 我现在很怀疑就是这个原因造成的,我去试试看。######回复 @snailkky : :cold_sweat:我也只是知道这个东西,或许你可以写个测试用例试一下,用Jmeter定个6000进程访问看看######一般每个进程最多允许同时打开1024个文件,这1024个文件中还得除去每个进程必然打开的标准输入,标准输出,标准错误,服务器监听socket,进程间通讯的unix域socket等文件,那么剩下的可用于客户端socket连接的文件数就只有大概1024-10=1014个左右。也就是说缺省情况下,基于Linux的通讯程序最多允许同时1014个TCP并发连接。 是这个原因造成的吗?######65535###### 负载均衡,可以先开3个nginx,9个项目。######你这种就是性能不行, 上来就是分布式, 负载均衡。 明显几千连接,资源系统资源占用不高,是什么环节出了问题。 搞分布式,负载均衡就是掩耳盗铃######回复 @天空-sky : worker_connections 我配置了65535,另外worker_processes 我配置为8######nginx 还有worker_connections配置,可以了解下###### 密集IO情况下的Nginx调优方案: nginx进程数调到CPU核数的1.5倍,并且把每个进程平均绑到每个CPU上,多出来的让Linux自动调度到空闲CPU。 突然并发的情况下,Tomcat调优方法: 调成多进程+多线程运行模式,并且空闲时保留进程不少于CPU核数的一半。 nginx和tomcat采用fastcgi方式互交。###### 我简单看了一下,服务器很正确,监控正常,你的高峰瘫痪是指?######就是很多用户进不来,我自己也进不去,加载不出来,nginx部署的另一个静态页也无法访问###### 单机的配置降一降,拆分成多节点呗。###### 使用令牌桶做限流处理###### 我更好奇你这个监控是怎么看到的,为什么我的云监控没你的这么细######额,懂了,但是你好像是升级版的,我的是免费版的! 看了下升级版的,一个月都要1099:joy:######在云服务监控-云服务器ECS,你点进去,再点单个的监控,就可以显示这个图表了。###### 光看这个不太好分析,信息量太少。首先tomcat本身支持的并发就不高,到了6000肯定是没办法支持的,即使你将你的maxThread设置为2000,以你机器的性能也无法发挥线程的优势,反而增加了CPU线程切换的资源耗费。如果流量真的有这么大,那需要考虑做集群来承载。另外如果你的应用是IO型的,可以试试tomcat的NIO方式。######我是spring boot2,tomcat默认就是nio######高版本的tomcat好像默认都是nio,那如果是这样的话,高配服务器就发挥不了它的性能,感觉挺鸡肋的。######看症状貌似你的服务器是共享实例,积分用完之后cpu占用率不能超过20%######我这个是通用型实例 不是共享型###### 看下带宽######没有,因为我也怕是带宽的问题,然后我又升级到了60M,程序也没有变化。######回复 @snailkky : 出问题的那天,带宽使用情况怎么样?有没有出现不足######现在是5M带宽,但我那天临时升级到了20M

kun坤 2020-06-07 09:02:49 0 浏览量 回答数 0

回答

本文介绍AliSQL的内核版本更新说明。 MySQL 8.0 20200229 新特性 Performance Agent:更加便捷的性能数据统计方案。通过MySQL插件的方式,实现MySQL实例内部各项性能数据的采集与统计。 在半同步模式下添加网络往返时间,并记录到性能数据。 性能优化 允许在只读实例上进行语句级并发控制(CCL)操作。 备实例支持Outline。 Proxy短连接优化。 优化不同CPU架构下的pause指令执行时间。 添加内存表查看线程池运行情况。 Bug修复 在低于4.9的Linux Kenerls中禁用ppoll,使用poll代替。 修复wrap_sm4_encrypt函数调用错误问题。 修复在滚动审核日志时持有全局变量锁的问题。 修复恢复不一致性检查的问题。 修复io_statistics表出现错误time值的问题。 修复无效压缩算法导致崩溃的问题。 修复用户列与5.6不兼容的问题。 20200110 新特性 Inventory Hint:新增了三个hint, 支持SELECT、UPDATE、INSERT、DELETE 语句,快速提交/回滚事务,提高业务吞吐能力。 性能优化 启动实例时,先初始化Concurrency Control队列结构,再初始化Concurrency Control规则。 异步清除文件时继续取消小文件的链接。 优化Thread Pool性能。 默认情况下禁用恢复不一致性检查。 更改设置变量所需的权限: 设置以下变量所需的权限已更改为普通用户权限: auto_increment_increment auto_increment_offset bulk_insert_buffer_size binlog_rows_query_log_events 设置以下变量所需的权限已更改为超级用户或系统变量管理用户权限: binlog_format binlog_row_image binlog_direct sql_log_off sql_log_bin 20191225 新特性 Recycle Bin:临时将删除的表转移到回收站,还可以设置保留的时间,方便您找回数据。 性能优化 提高短连接处理性能。 使用专用线程为maintain user服务,避免HA失败。 通过Redo刷新Binlog时出现错误会显式释放文件同步锁。 删除不必要的TCP错误日志。 默认情况下启用线程池。 Bug修复 修复慢日志刷新的问题。 修复锁定范围不正确的问题。 修复TDE的Select函数导致的核心转储问题。 20191115 新特性 Statement Queue:针对语句的排队机制,将语句进行分桶排队,尽量把可能具有相同冲突的语句放在一个桶内排队,减少冲突的开销。 20191101 新特性 为TDE添加SM4加密算法。 保护备实例信息:拥有SUPER或REPLICATION_SLAVE_ADMIN权限的用户才能插入/删除/修改表slave_master_info、slave_relay_log_info、slave_worker_info。 提高自动递增键的优先级:如果表中没有主键或非空唯一键,具有自动增量的非空键将是第一候选项。 对系统表和处于初始化状态线程用到的表,不进行Memory引擎到MyISAM引擎的自动转换。 Redo Log刷新到磁盘之前先将Binlog文件刷新到磁盘。 实例被锁定时也会影响临时表。 添加新的基于LSM树的事务存储引擎X-Engine。 性能优化 Thread Pool:互斥优化。 Performance Insight:性能点支持线程池。 参数调整: primary_fast_lookup:会话参数,默认值为true。 thread_pool_enabled:全局参数,默认值为true。 20191015 新特性 TDE:支持透明数据加密TDE(Transparent Data Encryption)功能,可对数据文件执行实时I/O加密和解密,数据在写入磁盘之前进行加密,从磁盘读入内存时进行解密。 Returning:Returning功能支持DML语句返回Resultset,同时提供了工具包(DBMS_TRANS)便于您快捷使用。 强制将引擎从MyISAM/MEMORY转换为InnoDB:如果全局变量force_memory/mysiam_to_innodb为ON,则创建/修改表时会将表引擎从MyISAM/MEMORY转换为InnoDB。 禁止非高权限账号切换主备实例。 性能代理插件:收集性能数据并保存到本地格式化文本文件,采用文件轮循方式,保留最近的秒级性能数据。 Innodb mutex timeout cofigurable:可配置全局变量innodb_fatal_semaphore_wait_threshold,默认值:600。 忽略索引提示错误:可配置全局变量ignore_index_hint_error,默认值:false。 可关闭SSL加密功能。 TCP错误信息:返回TCP方向(读取、读取等待、写入等待)错误及错误代码到end_connection事件,并且输出错误信息到错误日志。 Bug修复 支持本地AIO的Linux系统内,在触发线性预读之前会合并AIO请求。 优化表/索引统计信息。 如果指定了主键,则直接访问主索引。 20190915 Bug修复 修复Cmd_set_current_connection内存泄露问题。 20190816 新特性 Thread Pool:将线程和会话分离,在拥有大量会话的同时,只需要少量线程完成活跃会话的任务即可。 Statement Concurrency Control:通过控制并发数应对突发的数据库请求流量、资源消耗过高的语句访问以及SQL访问模型的变化,保证MySQL实例持续稳定运行。 Statement Outline:利用Optimizer Hint和Index Hint让MySQL稳定执行计划。 Sequence Engine:简化获取序列值的复杂度。 Purge Large File Asynchronously:删除单个表空间时,会将表空间文件重命名为临时文件,等待异步清除进程清理临时文件。 Performance Insight:专注于实例负载监控、关联分析、性能调优的利器,帮助您迅速评估数据库负载,找到性能问题的源头,提升数据库的稳定性。 优化实例锁状态:实例锁定状态下,可以drop或truncate表。 Bug修复 修复文件大小计算错误的问题。 修复偶尔出现的内存空闲后再次使用的问题。 修复主机缓存大小为0时的崩溃问题。 修复隐式主键与CTS语句的冲突问题。 修复慢查询导致的slog出错问题。 20190601 性能优化 缩短日志表MDL范围,减少MDL阻塞的可能性。 重构终止选项的代码。 Bug修复 修复审计日志中没有记录预编译语句的问题。 屏蔽无效表名的错误日志。 MySQL 5.7基础版/高可用版 20200229 新特性 Performance Agent:更加便捷的性能数据统计方案。通过MySQL插件的方式,实现MySQL实例内部各项性能数据的采集与统计。 在半同步模式下添加网络往返时间,并记录到性能数据。 性能优化 优化不同CPU架构下的pause指令执行时间。 Proxy短连接优化。 添加内存表查看线程池运行情况。 Bug修复 修复DDL重做日志不安全的问题。 修复io_statistics表出现错误time值的问题。 修复更改表导致服务器崩溃的问题。 修复MySQL测试用例。 20200110 性能优化 异步清除文件时继续取消小文件的链接。 优化Thread Pool性能。 thread_pool_enabled参数的默认值调整为OFF。 20191225 新特性 内部账户管理与防范:调整用户权限保护数据安全。 性能优化 提高短连接处理性能。 使用专用线程为maintain user服务,避免HA失败。 删除不必要的TCP错误日志。 优化线程池。 Bug修复 修复读写分离时mysqld进程崩溃问题。 修复密钥环引起的核心转储问题。 20191115 Bug修复 修复主备切换后审计日志显示变量的问题。 20191101 新特性 为TDE添加SM4加密算法。 如果指定了主键,则直接访问主索引。 对系统表和处于初始化状态线程用到的表,不进行Memory引擎到MyISAM引擎的自动转换。 性能优化 Thread Pool:互斥优化。 引入审计日志缓冲机制,提高审计日志的性能。 Performance Insight:性能点支持线程池。 默认开启Thread Pool。 Bug修复 在处理维护用户列表时释放锁。 补充更多TCP错误信息。 20191015 新特性 轮换慢日志:为了在收集慢查询日志时保证零数据丢失,轮换日志表会将慢日志表的csv数据文件重命名为唯一名称并创建新文件。您可以使用show variables like '%rotate_log_table%';查看是否开启轮换慢日志。 性能代理插件:收集性能数据并保存到本地格式化文本文件,采用文件轮轮循方式,保留最近的秒级性能数据。 强制将引擎从MEMORY转换为InnoDB:如果全局变量rds_force_memory_to_innodb为ON,则创建/修改表时会将表引擎从MEMORY转换为InnoDB。 TDE机制优化:添加keyring-rds插件与管控系统/密钥管理服务进行交互。 TCP错误信息:返回TCP方向(读取、读取等待、写入等待)错误及错误代码到end_connection事件,并且输出错误信息到错误日志。 Bug修复 修复DDL中的意外错误Error 1290。 20190925 参数修改 将系统变量auto_generate_certs的默认值由true改为false。 增加全局只读变量auto_detact_certs,默认值为false,有效值为[true | false]。 该系统变量在Server端使用OpenSSL编译时可用,用于控制Server端在启动时是否在数据目录下自动查找SSL加密证书和密钥文件,即控制是否开启Server端的证书和密钥的自动查找功能。 20190915 新特性 Thread Pool:将线程和会话分离,在拥有大量会话的同时,只需要少量线程完成活跃会话的任务即可。 20190815 新特性 Purge Large File Asynchronously:删除单个表空间时,会将表空间文件重命名为临时文件,等待异步清除进程清理临时文件。 Performance Insight:专注于实例负载监控、关联分析、性能调优的利器,帮助您迅速评估数据库负载,找到性能问题的源头,提升数据库的稳定性。 优化实例锁状态:实例锁定状态下,可以drop或truncate表。 Bug修复 禁止在set rds_current_connection命令中设置rds_prepare_begin_id。 允许更改已锁定用户的信息。 禁止用关键字actual作为表名。 修复慢日志导致时间字段溢出的问题。 20190510版本 新特性:允许在事务内创建临时表。 20190319版本 新特性:支持在handshake报文内代理设置threadID。 20190131版本 升级到官方5.7.25版本。 关闭内存管理功能jemalloc。 修复内部变量net_lenth_size计算错误问题。 20181226版本 新特性:支持动态修改binlog-row-event-max-size,加速无主键表的复制。 修复Proxy实例内存申请异常的问题。 20181010版本 支持隐式主键。 加快无主键表的主备复制。 支持Native AIO,提升I/O性能。 20180431版本 新特性: 支持高可用版。 支持SQL审计。 增强对处于快照备份状态的实例的保护。 MySQL 5.7三节点企业版 20191128 新特性 支持读写分离。 Bug修复 修复部分场景下Follower Second_Behind_Master计算错误问题。 修复表级并行复制事务重试时死锁问题。 修复XA相关bug。 20191016 新特性 支持MySQL 5.7高可用版(本地SSD盘)升级到三节点企业版。 兼容MySQL官方GTID功能,默认不开启。 合并AliSQL MySQL 5.7基础版/高可用版 20190915版本及之前的自研功能。 Bug修复 修复重置备实例导致binlog被关闭问题。 20190909 新特性 优化大事务在三节点强一致状态下的执行效率。 支持从Leader/Follower进行Binlog转储。 支持创建只读实例。 系统表默认使用InnoDB引擎。 Bug修复 修复Follower日志清理命令失效问题。 修复参数slave_sql_verify_checksum=OFF和binlog_checksum=crc32时Slave线程异常退出问题。 20190709 新特性 支持三节点功能。 禁用semi-sync插件。 支持表级并行复制、Writeset并行复制。 支持pk_access主键查询加速。 支持线程池。 合并AliSQL MySQL 5.7基础版/高可用版 20190510版本及之前的自研功能。 MySQL 5.6 20200229 新特性 支持Proxy读写分离功能。 性能优化 优化线程池功能。 优化不同CPU架构下的pause指令执行时间。 Bug修复 修复XA事务部分提交的问题。 20200110 新特性 Thread Pool:将线程和会话分离,在拥有大量会话的同时,只需要少量线程完成活跃会话的任务即可。 性能优化 异步清除文件时继续取消小文件的链接。 Bug修复 修复页面清理程序的睡眠时间计算不正确问题。 修复SELECT @@global.gtid_executed导致的故障转移失败问题。 修复IF CLIENT KILLED AFTER ROLLBACK TO SAVEPOINT PREVIOUS STMTS COMMITTED问题。 20191212 性能优化 删除不必要的tcp错误日志 20191115 Bug修复 修复慢日志时间戳溢出问题。 20191101 Bug修复 修复刷新日志时切换慢日志的问题,仅在执行刷新慢日志时切换慢日志。 修正部分显示错误。 20191015 新特性 轮换慢日志:为了在收集慢查询日志时保证零数据丢失,轮换日志表会将慢日志表的csv数据文件重命名为唯一名称并创建新文件。您可以使用show variables like '%rotate_log_table%';查看是否开启轮换慢日志。 SM4加密算法:添加新的SM4加密算法,取代旧的SM加密算法。 Purge Large File Asynchronously:删除单个表空间时,会将表空间文件重命名为临时文件,等待异步清除进程清理临时文件。 TCP错误信息:返回TCP方向(读取、读取等待、写入等待)错误及错误代码到end_connection事件,并且输出错误信息到错误日志。 引入审计日志缓冲机制,提高审计日志的性能。。 Bug修复 禁用pstack,避免存在大量连接时可能导致pstack无响应。 修复隐式主键与create table as select语句之间的冲突。 自动清除由二进制日志创建的临时文件。 20190815 优化实例锁状态:实例锁定状态下,可以drop或truncate表。 20190130版本 修复部分可能导致系统不稳定的bug。 20181010版本 添加参数rocksdb_ddl_commit_in_the_middle(MyRocks)。如果这个参数被打开,部分DDL在执行过程中将会执行commit操作。 201806** (5.6.16)版本 新特性:slow log精度提升为微秒。 20180426(5.6.16)版本 新特性:引入隐藏索引,支持将索引设置为不可见,详情请参见参考文档。 修复备库apply线程的bug。 修复备库apply分区表更新时性能下降问题。 修复TokuDB下alter table comment重建整张表问题,详情请参见参考文档。 修复由show slave status/show status可能触发的死锁问题。 20171205(5.6.16)版本 修复OPTIMIZE TABLE和ONLINE ALTER TABLE同时执行时会触发死锁的问题。 修复SEQUENCE与隐含主键冲突的问题。 修复SHOW CREATE SEQUENCE问题。 修复TokuDB引擎的表统计信息错误。 修复并行OPTIMIZE表引入的死锁问题。 修复QUERY_LOG_EVENT中记录的字符集问题。 修复信号处理引起的数据库无法停止问题,详情请参见参考文档。 修复RESET MASTER引入的问题。 修复备库陷入等待的问题。 修复SHOW CREATE TABLE可能触发的进程崩溃问题。 20170927(5.6.16)版本 修复TokuDB表查询时使用错误索引问题。 20170901(5.6.16)版本 新特性: 升级SSL加密版本到TLS 1.2,详情请参见参考文档。 支持Sequence。 修复NOT IN查询在特定场景下返回结果集有误的问题。 20170530 (5.6.16)版本 新特性:支持高权限账号Kill其他账号下的连接。 20170221(5.6.16)版本 新特性:支持读写分离简介。 MySQL 5.5 20181212 修复调用系统函数gettimeofday(2) 返回值不准确的问题。该系统函数返回值为时间,常用来计算等待超时,时间不准确时会导致一些操作永不超时。

游客yl2rjx5yxwcam 2020-03-08 13:18:55 0 浏览量 回答数 0

回答

Re一台8核8G与两台4核4G的云主机性能对比 引用第1楼服务器之家于2014-02-07 10:42发表的  : 虚拟机的CPU都是共享的,性能好不好要看邻居里有没有大户。 我觉得虚拟机的CPU不是共享的吧 ------------------------- Re回1楼服务器之家的帖子 引用第2楼青叶竹于2014-02-07 14:20发表的 回1楼服务器之家的帖子 : 你没理解我的问题。 不考虑什么共享的问题,排开这些干扰因素, 仅仅从一台8核8G与两台4核4G的机器,哪个跑起来性能更优?还是两者的性能一样? 我觉得后者的性能更优 你这个问题很难回答。得看你的应用而定。如果你的应用是分布式的,当然是两台要优。如果你的应用需要开的线程比较多,那么8核要优。所以,得你自己分析。 ------------------------- 回5楼青叶竹的帖子 分布式应用,单台服务器的性能,不是考虑的重点。分布式应用重点考虑的是扩展性和安全性。比如我的一个服务器应用,因为用户数量的增加,现在服务器压力较大,那么我选择增加一台服务器来解决这个问题,而不是提高服务器的配置,那么这就是分布式应用。这种应用对单台服务器的性能不是很敏感,反正都能通过扩展服务器数量解决问题。当然,提高单台服务器的性能,能够减少服务器数量的部署,但是这个往往是从成本上考虑的。 一个应用程序,特别是服务器程序,要实时处理用户响应,那么就会有许多的线程同时运行,如果服务器CPU的核心数量少于应用说要求的线程数,那么多余的线程必然就会被挂起,影响服务器响应速度。在这样的情况下,当然是核心数越多越好了。 ------------------------- 回7楼青叶竹的帖子 对于现在的大部分服务器应用来说,单核的性能是足够了的,瓶颈在于CPU的核心数远远小于应用所要求的核心数。如果仅仅从性能方面考虑。我觉得一台8核的,要比2台4核的要好。 如果你的应用能够支持两台及以上的服务器,或许你还需要加上SLB。那这样,你的应用偏向分布式的了。 ------------------------- Re一台8核8G与两台4核4G的云主机性能对比 你的感觉,比如TCP端口,或者连接数,这些都是错的。一个应用所占的端口及其有限,一台服务器所支持的端口几万个,这个完全不是理由。对于连接数来说,只要应用无限制,那么只要内存支持,连接数一台服务器也可以很大很大。 ------------------------- 回10楼青叶竹的帖子 如果是分布式的话,刚才也说了,考虑的重点不一样的。至于是两台还是一台,这个要从成本、性能和服务的持续性等方面去考虑。如果是我,偏向于部署多台。因为一台如果出故障或者需要维护,还有另一台提供服务。 ------------------------- 回13楼青叶竹的帖子 多台虚拟机运行,数据都是要同步的,这个只是利用虚拟机的磁盘来做IO密集型应用,恐怕是不太合适。同步IO,往往会运用到RDS,所以,我觉得想利用多台虚拟机提高IO的策略恐怕是行不通。 ------------------------- SLB是根据服务器的负载状况和你自己设定的比重值来分配连接到那台服务器。你存储的时候你并不知道文件是存到哪一台服务器的,那么你如何通过SLB读取你上传的FTP文件?如果你通过自己写的程序逻辑来判定,那么这已经不属于负载平衡的范畴了,且无法扩展。 ------------------------- 回 18楼(青叶竹) 的帖子 嗯。。。 如果你的三台服务器能实时同步,这种方法也行。 不过,同步之间也需要占用IO资源的,如果上传的频率比较高,你这个或许也有局限。 ------------------------- 回 21楼(青叶竹) 的帖子 这样应用,几台服务器的数据同步是一个问题,不是那么好解决的,特别是对于实时性要求高的应用更是如此。

南极的风 2019-12-02 02:40:19 0 浏览量 回答数 0

问题

云服务器 ECS Linux Apache 运行参考如何调整优化

boxti 2019-12-01 21:56:41 1238 浏览量 回答数 0

回答

你说的这种是并发量特别大吗?如果只是cache失效并发量不大,那很简单,query db -> put to cache就可以了,这样后续请求又被cache拦掉了,如果是瞬间请求很大,我们可以看一下,如服务器/容器 处理的线程数是多少,然后rt是多少,然后算出db tps/qps是多少,如果并不大,那很有可能是你数据库本身就设计的有问题,如果很大, 那么需要将cache的逻辑和db的逻辑切开,缓存更新异步化,所有请求都直接读cache,不读db就可以了,不过这会稍微有点复杂的,你需要考虑很多额外情况。######没人看吗- -######如果怕db压力大的话感觉可以在缓存不存在的时候加同步代码(再判断-读db或读cache)。同步的话不知道作为一个商业应用是不是太奢侈了,感觉延时应该不大。如果缓存不存在的话耗时就是读db的时间,对于进入第一个无缓存条件请求的响应时间是前一个读db+读cache。对于你说的情景在缓存失效时大量并发访问的话可以减小数据库压力的。######缓存时效错开######二级cache######能否在缓存失效操作时,取得最新数据再刷新缓存 如果数据库操作该同步串行操作的话可能会降低伸缩性######1. 控制失效时间,避免同时失效。比如写入时,过期时间在一个范围内随机     ---当然了,这样避免不了redis down机所造成的同时失效(避免down机又是怎么高可用的问题了) 2. 常规的缓存更新,可以加锁。 简单来说,就是当读取缓存失败需要去db读取时,通过加锁保证只有一个请求去db进行读取和更新,其它的请求可以直接返回或等待。 --这种加锁,解决的是某个key失效后,大量请求都同时读取该key的情况(比如全局的计数之类)。如果是上面提到的donw机的场景,那已经是一场”雪崩“了,就要根椐实际场景来操作了。。。 所以,如果是预案,既然是缓存,就要想尽办法,避免整体失效(因为一旦整体失效,而db又无法承受大量请求的话,则只能是降级服务了)######谢谢######用两个键值对的缓存代替之前的一个,将缓存时间( key-time),和缓存数据( key-data )分离 1.当缓存过期时,第一个线程发现 key-time 没有,则先更新 key-time, 2.然后去查询数据库(或任何比较耗时的数据查询方式),并更新 key-data 的值, 3.当后续线程来获取数据时,虽然第一个还没有从数据库查完并更新缓存,但发现 key-time 存在,会获取旧的数据。######回复 @东方游 : 存在以下几个问题: 1.你用标识的话可能会出现一直等待的问题。 2.其他线程你要设置等待多久合适?对不同的访问设置不同的等待时间?######现在想到的方案是如果缓存没有查询到,就向redis中存入一条标识,再进行查库,查库完成之后放到缓存并删除标识,出现大量请求时先去缓存中查询标识,如果查询到标识说明已经在进行数据库查询,这时便进行等待几百毫秒或者几秒,再进行查询 ,不知道这样是否可行######redis缓存存的哪方面的数据。######回复 @mickelfeng : 我题目的意思是缓存到期失效了,然后同时会有大量的请求查询干到数据库中,比如1000个相同的查询同时过来,数据库压力增大,现在是不相给数据库增加压力,又让缓存重新生效######变动很少的话不存在。######redis缓存过期了。一个请求query+cache,以后请求cache,不存在你说的问题######就是查询的数据列表######如果访问量真的到缓存实效都有大量连接同时进来,可以考虑使用redis当数据库用,数据做持久化存储用了。 redis要用备份服务,以确保主服务挂了,备服务提供只读模式降级服务。

kun坤 2020-05-30 22:57:52 0 浏览量 回答数 0

问题

DDos分析三:攻击实例 - SYN Flood攻击[续]

千鸟 2019-12-01 21:46:28 14353 浏览量 回答数 3

回答

云端接入域名和端口号是什么? 域名:js ${YourProductKey}.iot-as-mqtt.${YourRegionId}.aliyuncs.com 。 其中,${YourProductKey}请替换为您的产品ProductKey;${YourRegionId}请参见地域和可用区,替换为您在物联网平台创建产品时选择的地域代码。 端口: 1883。 使用MQTT协议连接,不同的设备可以使用相同的clientID连接服务器吗? clientID需为全局唯一。如果不同的设备使用相同的clientID同时连接物联网平台,那么先连接的那个设备会被强制断开。 如何开启域名直连? MQTT连接有两种方式。 认证后再连接:首先使用HTTPS连接到```js js iot-auth.cn-shanghai.aliyuncs.com:443 获取认证cert后,再使用MQTT连接到 ```js js/public.iot-as-mqtt.cn-shanghai.aliyuncs.com/1883。 认证连接必须使用TLS加密进行认证。 域名直连:连接域名:js ${productKey}.iot-as-mqtt.cn-shanghai.aliyuncs.com:1883 。 域名直连减少了HTTPS获取证书cert的过程。 资源受限的设备推荐使用域名直连。一些特殊增值服务,例如设备级别的引流,则推荐先HTTPS发送授权后再连接MQTT。在make.setting中设置js FEATURE_MQTT_DIRECT=y , 然后执行js make reconfig 即 可设置为先认证后再MQTT连接。 MQTT协议版本是多少? 在MQTT connect packet中设置MQTT的版本。目前SDK(V2.02)使用MQTT 3.1.1 。 可以修改SDK代码中js src\mqtt\mqtt_client.h IOTX_MC_MQTT_VERSION 的 值,来修改支持的版本。3:3.1版;4:3.1.1版。 MQTT进行设备认证时,server返回“400”错误 认证返回400错误,表示鉴权认证失败。请检查设备证书信息ProductKey、DeviceName和DeviceSecret是否正确。 C语言SDK中MQTT是否支持iOS接入? C语言SDK可以移植到任何能够支持C语言的系统上。如果是iOS系统建议寻找开源的Object-C实现。 目前mqtt-example设备上线后会立刻下线,请问如何修改mqtt-example让设备一直处于上线状态? mqtt-example程序发送一次消息后会自动退出,可以尝试以下任意一种方式实现长期在线。 执行mqtt-example时,使用命令行js ./mqtt-example loop , 设备会保持长期在线。修改demo代码。example 的代码在最后会调用IOT_MQTT_Destroy,设备最后会变成离线状态,所以可以修改代码,去掉IOT_MQTT_Unregister 和IOT_MQTT_Destroy。 while(1) { IOT_MQTT_Yield(pclient, 200); HAL_SleepMs(100); } 心跳的时间间隔如何设置? 在IOT_MQTT_Construct里面可以设置keepalive_interval_ms的取值。物联网平台使用这个值来作为心跳间隔时间。keepalive_interval_ms的取值范围是60000~300000。 设备端的重连机制是什么? 设备端会在keepalive_interval_ms时间间隔发送ping request,然后等待ping response。 如果设备端在keepalive_interval_ms时间内无法收到ping response,或是在进行send以及recv时发生错误,平台就认为此时网络断开,而需要进行重连。 重连机制是平台内部触发,无需使用者接入。重连时,会重新进行认证。如果认证成功就会开始再次进行MQTT connect。重连会一直持续直到再次连接成功。 云端如何侦测到设备离线? 云端会根据MQTT CONNECT packet里面keepalive的设置,等待ping request。如果在指定时间内没有收到ping request,则认为设备离线。 云端可以接受的最大时延是5秒。 设备端SDK是否支持MQTT和CCP协议的断线重连? 支持。测试场景描述:开发板通过WiFi连接上路由器后,把网线拔掉,MQTT和CCP协议都会自动尝试和server重新建立连接。尝试时间间隔是1s、2s、4s、8s、…,最大间隔时间默认是60s,也就是说断网后超过60s时间仍未连接成功,之后会每隔60s尝试和server重连。您可以设置最大间隔时间。 发布(Publish QoS1)数据时,偶尔会出现MQTT_PUSH_TO_LIST_ERROR(-42),如何解决? 需要等待ACK的packet都会存放起来,等待ACK。存放量有上限,当需要等待的packet太多到达上限时,就会触发js MQTT_PUSH_TO_LIST_ERROR(-42) error 。 出现错误可能是因为当前网络状态不好,或者是发送的频率过高。如果排除上述两个问题,当前的发送的频率是预期的,那么可以适当的调整IOTX_MC_REPUB_NUM_MAX、 IOTX_MC_SUB_REQUEST_NUM_MAX和IOTX_MC_SUB_NUM_MAX的大小。 如果业务允许,也可以把publish的QoS调整成0。 IOT_MQTT_Yield的作用是什么? IOT_MQTT_Yield的作用是尝试接收数据。因此在需要接收数据时,例如subscribe 和 unsubscribe之后,publish QoS1 消息之后,或是希望收到publish 数据时,都需要主动调用该函数。 IOT_MQTT_Yield参数timeout的意义是什么? IOT_MQTT_Yield会尝试接收数据,直到timeout时间到后才会退出。 IOT_MQTT_Yield与HAL_SleepMs的区别 IOT_MQTT_Yield与HAL_SleepMs都是阻塞一段时间,但是IOT_MQTT_Yield实质是去读取数据,而HAL_SleepMs则是系统什么也不做,等待timeout。 如何循环接收消息? 需要循环调用IOT_MQTT_Yield ,函数内自动维持心跳和接收数据。 订阅了多个Topic,调用一次IOT_MQTT_Yield,能接收到多个Topic的消息吗? 首先需要确定Topic的权限,是不是同时满足发布和订阅。如果是,调用一次IOT_MQTT_Yield,可以接收到多个packet。 MQTT连接方式,只能通过不停地调用IOT_MQTT_Yield来轮询获取数据吗? 如果使用的TCPIP协议栈,可以实现TCP主动通知上层有数据到达,可以改动实现事件触发的方式来触发IOT_MQTT_Yield。但是改动比较大,所以还请自行评估是否需要修改。 修改流程是: 调整utils_net.c里面socket的API,变成可以由TCP数据到达时回调的API。 当TCP主动通知上层有数据到达时,通知到MQTT服务器。让MQTT服务器内部执行IOT_MQTT_Yield,这样就可以不需要外部调用IOT_MQTT_Yield来读取数据。 如果TCP无法做到主动上报数据,但OS支持多线程,也可以在MQTT-example里面再起一个thread,在这个thread里面以下代码用于接收数据。收到数据时,触发主线程进行数据处理,而主线程大部分时间可以用于处理其他逻辑。 while(1) { IOT_MQTT_Yiled(pclient, 200); HAL_SleepMs(200); } 如果使用的系统也不支持多线程,就只能把IOT_MQTT_Yield的timeout时间间隔减小,然后提高调用的频率,在每次调用的时间间隔内执行其他操作,从而做到尽量减少对其他操作的阻塞。 是否支持QoS 2? 不支持。 什么情况下会发生订阅超时(subscribe timeout)? 在2倍request_timeout_ms时间内,系统未接收到SUBACK packet时,会触发订阅超时,并通过event_handle函数发送超时通知。 请在subscribe之后,立刻执行IOT_MQTT_Yield尝试读取SUBACK,请勿使用HAL_SleepMs。 subcribe时,返回IOTX_MQTT_EVENT_SUBCRIBE_NACK 请检查Topic的操作权限是否为订阅。 如果发布报错“no authorization”,请确认是否为发布权限。 MQTT 发布的消息体大小限制 MQTT的协议包受限于IOT_MQTT_Construct里参数的write_buf和read_buf的大小。 MQTT协议包大小不能超过256 KB。超过大小限制的消息会被丢弃。 MQTT协议pub消息payload格式是怎么样的? 物联网平台没有制定pub消息payload的具体字段有那些。您根据应用场景制定自己的协议,然后以JSON格式放到pub消息载体里面传给服务端。 ota_mqtt升级的时候报错“mqtt read buffer is too short” MQTT设置的buffer过小,即mqtt_param的pread_buf和pwrite_buf申请过小造成的。可以根据实际需要修改OTA_MQTT_MSGLEN的大小。 是否可以使用MQTT直连的方式进行OTA升级? OTA升级时,必须使用HTTPS进行固件下载。MQTT只接收版本更新指令,与MQTT的连接方式无关。阿里云不支持HTTP下载固件,因此如果设备没有SSL通信的能力,则不能使用OTA服务。 打开MQTT over TLS,运行时提示MQTT创建失败,返回错误码0x2700 如果关闭MQTT over TLS则可以成功地订阅和发布信息;打开MQTT over TLS时,建连失败。首先确认mbedtls是否做了修改,这是用于传输层和应用层之间加密的功能,不能随意更改。mbedtls没有修改,则考虑系统时间是否正确,系统时间不对也会导致证书校验失败。 进行mqtt连接的时候,是否需要root.crt证书验证? 若使用TLS进行MQTT接入,需要下载根证书。 若使用物联网平台提供的demo进行开发,无需再下载根证书,demo中已自带证书。 物联网平台支持哪些QoS Level? 在MQTT协议和CCP协议下,阿里云物联网平台支持的QoS Level都包括0和1。

剑曼红尘 2020-03-05 12:51:20 0 浏览量 回答数 0

回答

为什么发布消息报错? 服务端订阅客户端只能用于订阅物联网平台推送的消息,不能发布消息。如果您用HTTP/2 SDK发布消息,会有如下报错信息: 6095 [nioEventLoopGroup-2-1] ERROR com.aliyun.openservices.iot.api.message.impl.MessageClientImpl - failed to publish message 0, error: failed to publish, code: 400, content: Forbidden. 6095 [nioEventLoopGroup-2-1] INFO com.aliyun.openservices.iot.api.message.impl.MessageClientImpl - give up publishing, message id: 0 因为配置HTTP/2 SDK时,使用Profile.getAccessKeyProfile 配置连接,表示SDK以订阅者身份接入物联网平台,只能订阅消息,不能发布消息,且subscribe、unsubscribe和publish 三个接口无法使用。 为什么服务端没有接收到消息? 您的服务端没有接收到已订阅的消息,原因如下: 该消息是您通过控制台或API下发给设备的消息。服务端订阅仅支持设备端上报云端的消息,不支持订阅下行消息。有多个消息消费端。如果同时有多个消费端,物联网平台会将消息随机推送到其中一个消费端,并不是每个消费端都会推送。服务端订阅回调中,存在耗时业务。解决方法:配置HTTP/2 SDK时,需配置收到消息后尽快return CommitSuccess;并且,配置另起线程处理业务。没有在物联网平台控制台配置服务端订阅。解决方法:请登录物联网平台控制台,在产品的服务端订阅页签下确认。如果没有设置订阅相关消息,请及时设置。 消息接收慢的原因是什么? 原因:服务端订阅回调中,可能存在耗时业务。 解决方法:配置HTTP/2 SDK时,需配置收到消息后尽快return CommitSuccess;并且,配置另起线程处理业务。 如何进行消息过滤? 物联网平台会将已订阅的消息全量推送到您的消费端,您需调用setMessageListener进行本地消息过滤,处理指定Topic的消息。具体方法如下: setMessageListener(String topic, MessageCallback messageCallback) 匹配指定Topic的消息到达时,则会调用指定的回调messageCallback处理;不匹配指定Topic的消息到达时,则会调用您在connect中指定的回调处理。 为什么测试环境会收到线上产品的消息? 服务端订阅是账号维度的消息推送,无法从产品或设备维度来区分消息。如果不希望在测试环境收到线上产品的消息,建议如下两种处理方式: 使用使用消息服务订阅设备消息。正式环境和测试环境使用两个阿里云账号。 HTTP/2 SDK限制 服务端订阅仅支持 Java 和 .NET 两种语言的SDK,并且两种语言的SDK有以下限制: Java SDK仅支持JDK 8环境。.NET 不支持 .NET Core。 服务端订阅如何收费? 服务端订阅按照消息数量计费。具体计费方法,请参见计费方法

剑曼红尘 2020-03-05 17:17:53 0 浏览量 回答数 0

问题

MaxCompute百问集锦

yq传送门 2019-12-01 20:16:47 2404 浏览量 回答数 1

问题

云数据库Redis 集群版-单副本简介

云栖大讲堂 2019-12-01 21:19:14 1035 浏览量 回答数 0

问题

关于RDS只读实例延迟分析

belle.zhoux 2019-12-01 22:07:30 8754 浏览量 回答数 4
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 SQL审核 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站 人工智能 阿里云云栖号 云栖号案例 云栖号直播