strace怎么排除服务器故障
① sql server无法连接到 服务器
在大多数情况下,卸载Visual Studio和。NET 4和重新安装它们可以解决。
如果还不解决这个问题,你可以按照下面的步骤来解决此错误:
1。运行命令提示符,然后找到的DLL文件的位置,使用以下命令:
DIR Microsoft.SqlServer.Diagnostics.STrace.dll/ S
2。复制DLL的名称与位置。
3。以管理员身份运行VS 2008的命令提示符。
4。执行以下命令
GACUTIL- I“{Microsoft.SqlServer.Diagnostics.STrace.dll 在第1步找到的完整路径}”
如果在您的系统缺少DLL文件Microsoft.SqlServer.Diagnostics.STrace.dll,你可以复制从其他的地方。
还不行重装SQL
② 在xp上安装SQL Server 2008的开发版后,连接到服务器时出现错误,还无法导入数据。
版本问题吧.你装的是企业版的?你试下换下面的版本安装:SQL Server 2008 Standard (32-bit)
SQL Server Developer (32-bit)
SQL Server Workgroup (32-bit)
SQL Server Web (32-bit)
SQL Server Express (32-bit) and Express with Advanced Services (32-bit)
③ 求助在线等TNS-12537 linux Error:29
故障排除指南ora-609:流产过程未知OsPID进行opiodr(文档ID 1121357.1)
alert.log显示ora-609与tns-12537:TNS:关闭连接(文档ID 1538717.1)
致命的Ni连接12560地和逗ora-609 opiodr流产过程在警报日志错误(文档ID 987162.1)
数据库的警报日志中常会见到ora-609、ora-3136 / ora-609 tns-12537和tns-12547或tns-12170 12170,逗tns-12535等相关错误,对此类型问题进行整理归纳,如下:
1。ora-609错误的排查指南:
报警日志可以看到如下错误信息:
致命的Ni连接错误12537,连接:
(LOCAL=NO)
版本信息:
TNSLinux:版本11.2.0.3.0生产
Oracle将NT协议适配器Linux:版本11.2.0.3.0生产
TCP / IP协议适配器的Linux版本NT:11.2.0.3.0生产
时间:26-feb-2013 02:23:51
追踪未打开
TNS错误结构:
主要错误代码:12537 ns
tns-12537:TNS:连接关闭
错误代码:12560 ns级
主要错误代码:0新台币
NT错误代码:0次
NT操作系统错误代码:0
流产过程未知OsPID进行opiodr(28725)由于ora-609
第一个解释这种错误
消息
流产过程未知OsPID进行opiodr(.....)由于ora-609
只是一个通知,Oracle数据库关闭(终止)专用工艺由于ora-609。
ora-609意味着逗无法连接到传入的连接地这样的数据库的过程是逗中止地(闭)因为它不能连接到传入连接被听者传递给它的。
这是在SQLNET错误堆栈发现,在我们的例子中是:
tns-12537:TNS:连接关闭。
基本上专用的过程没有一个客户端连接了工作。
此报错类似通知:Oracle因为ora-609关闭或者叫中止了一个到数据库的专有连接——OsPID进行(28725)。
ora-609错误原因是:无法与进入的连接进行联系,所以无法将此连接转入监听器,所以数据库的过程中止此进程。
此时报错tns-12537:TNS:连接关闭,根本原因为客户端连接不正常。
客户端通过监听器连接Oracle数据库的过程:
1。客户端发起一个到数据库的连接,所以连接到监听器
2。听众开始(叉)专用数据库的过程中,会收到这个连接(会话)
三.在这个专门的程序开始,听者通过连接从客户这个过程
4。服务器进程将连接从听众继续与客户握手
5。服务器进程和客户交流建立会话所需的信息(即,两个常见的任务,用户登录)
6。会议开了
简单说就是:
1。客户端连接到监听器
2。监听派生叉一个子进程,交转化为专有服务器进程专用数据库的过程
3。第2步完成后,监听将客户端的连接转入此专有进程专用工艺
4服务器进程收到从监听来的连接信息后,需要继续与客户端的连接进行握手。
5。服务器进程与客户端进程交换建立会话需要的信息,如用户名、密码等
6。以上好后,会话打开。
在介于3、4步时客户端连接关闭,专用数据库的过程与客户端通信时发现客户端关闭了。
###############################
使用跟踪来排查:
文档:故障排除指南ora-609:流产过程未知OsPID进行opiodr(文档ID 1121357.1)
对于这种问题的排查,使用听众。日志或者SQLNET的跟踪效果不太好,因为每秒可能有很多连接同时SQLNET的跟踪未提供更多的客户端信息。
此时可以尝试使用OS层面的跟踪。
如:1111为监听进程,PS EF | grep tnslsnr查出
Linux:信息射频O /甲氧苄啶/ lsnr1.log P 1111
HP-UX:意大利-员工- AFPO /甲氧苄啶/ lsnr1.log 1111
如果使用微量跟踪,如下:
三.Oracle Net 16级服务器跟踪。添加到服务器端sqlnet.ora文件
DIAG_ADR_ENABLED=off # Disable ADR if version 11g
TRACE_LEVEL_SERVER = 16 # Enable level 16 trace
TRACE_TIMESTAMP_SERVER = ON # Set timestamp in the trace files
TRACE_DIRECTORY_SERVER = <DIRECTORY> # Control trace file location
TRACE_FILELEN_SERVER =<n> #Control size of trace set in kilobytes eg 20480
TRACE_FILENO_SERVER =<n> #Control number of trace files per process
使用errorstack方法如下:
4。errorstack:设置errorstack捕捉失败。这是特别有用当捕获Oracle Net客户端跟踪是不可行的。
SQL> ALTER SESSION事件609 errorstack(3)地;
一旦被收集而错误转载有一些痕迹:
SQL> ALTER SESSION事件609关地;
###############################################
关于此问题的解决方法有:
文档:alert.log显示ora-609与tns-12537:TNS:关闭连接(文档ID 1538717.1)
可能原因:
客户端卡住、崩溃;连接被防火墙杀死;客户端超时设置;客户端连接后立刻关闭;网络不稳定;
需要检查客户端dns。或/或中信息SQLNET:
在客户家sqlnet.ora Oracle可能超时:
sqlnet.outbound_connect_time
sqlnet.recv_timeout
sqlnet.send_timeout
tcp_connect_timeout
客户可能超时连接描述符(硬编码在客户端应用程序或客户端dns,ORA):
connect_timeout
④ 如何通过strace获取ftp的用户名和密码
1)远程虚拟机FTP密码查询
登录西部数码或阿里云官网,点击虚拟主机管理,找到域名,所在FTP服务器——管理,即可查看或修改FTP密码,如图:
ftp用户名和密码怎么查
ftp用户名和密码怎么查
ftp用户名和密码怎么查
2)远程主机FTP密码查询
远程主机不同于虚拟主机,远程主机可以使用远程桌面连接,可以分配多个虚拟主机地址或承载多个域名不同的独立网站。
FTP查询方法:登录开发商网址,服务器管理——初始密码,初始密码即为FTP密码。如图:
ftp用户名和密码怎么查
3)服务器总FTP密码查询
服务器总FTP账号可以查看服务器所有目录文件,权限大,安全性极低,慎重使用。
密码设置及修改方法:计算机——管理——本地用户和组——用户,右键用户属性,即可设置或修改密码。如图:
ftp用户名和密码怎么查
4)IIS下FTP密码查询
IIS下FTP可设置单个目录,安全性高,在网站维护中使用较多。
密码管理方法:
IIS服务器——FTP站点,右键站点属性——安全账户,即可管理密码,如图:
ftp用户名和密码怎么查
ftp用户名和密码怎么查
ftp用户名和密码怎么查
ftp用户名和密码怎么查
5)浏览器下FTP查询
浏览器登录FTP地址,也可以查询或设置FTP目录及密码;
如图:
ftp用户名和密码怎么查
6
6)本地FTP密码查询
本地FTP使用较少,需要安装虚拟服务器环境,在IIS中配置FTP。
本地IIS——添加——添加FTP站点。如图:
⑤ 如何解决Nginx服务自动关闭问题
首先排除是否为网络问题:检查了iptable等。同时思考,如果真的是网络问题,不应该运行一段时间后,才出现无法接受新连接的现象。
为了验证,当出现问题时,我又重新启动Nginx,发现又可以接收新的请求了。也就是说出现问题时,只需要重启Nginx就可以解决,那么自然不是网络因素。
判定是否是Nginx本身的问题(不一定是指代码包括我写的配置文件):因为这个代理服务器是为了测试fastsocket项目的稳定性,所以 Nginx是加载了fastsocket优化服务的。这时,就需要最纯粹的Nginx环境。我去掉了fastsocket服务,然后再用同样的配置启动 Nginx。这时,就排除了Nginx本身的问题。那么,究竟是否是fastsocket的bug呢?
这里先做一个小广告: fastsocket是新浪主导的一个开源项目,其通过封装socket套接字调用,无需改动服务程序,即可大幅提升服务程序性能。作者也是其中的维护者之一。这里小小推广一下:https://github.com/fastos/fastsocket。当使用fastsocket默认加载参数时,nginx运行一段时间就无法接受新连接请求了。
定位fastsocket问题:fastsocket的大部分优化功能都是有功能开关的,默认会使用一些功能,同时可以在加载动态模块时,使用参数指定是否打开开关。这时,先做实验,从所有功能关闭开始,逐渐打开功能开关,最后定位到enable_listen_spawn功能打开时,就会出现问题。并多次做实验,确定这是一个必现的问题。
当确定可以重现后,想这难道是一个fastsocket的bug吗?于是,先跟林晓峰同学说了一声,告诉他我的发现,毕竟fastsocket是他在sina时的工作,他最为熟悉代码。他说这可能是Nginx的配置使用了accept_mutex。我的配置文件虽然没有配置accept_mutex,但是没想到Nginx的accept_mutex是默认打开的。但是他忘了为什么会这样了?依稀记得是Nginx hang在了mutex中,具体原因记不清了。所以fastsocket的说明也是要求disable accept_mutex。
因为我一直以来有这还不错的求知欲,所以一定要搞清楚这个问题。同时我认为,如果真的是一启用accept_mutex,fastsocket和nginx就会有兼容问题,那也应该算是fastsocket的bug,应该将其解决掉。
定位Nginx hang在什么位置:这个很简单,使用strace -p跟踪Nginx的每个worer进程。发现大部分worker进程是在不断的epoll_wait,而其中一个worker进程,始终停留在epoll_wait中。重试多次,每次都是停留在epoll_wait中。
现在已经确定了本次问题,当使用fastsocket的enable_listen_spawn功能时,也就是fastsocket自动为当前CPU创建本地的listen socket套接字时,就会出现问题。
解决问题
当定位到问题时,就需要一步一步的找到原因,查看为什么一个worker进程始终停留在epoll_wait中。这时候,其实思考还是要优于动手。先思考,再动手,动手之后,看到结果,再做进一步思考。
查看该worker进程停留在epoll_wait的什么位置:只能通过日志形式来判断hang在epoll_wait的哪个位置?这时,不能用内核普通的printk来打印日志,不然就会淹没于大量正常工作worker进程打印的日志中。我们需要根据pid来打印日志。
再做一个小广告:我做了一个内核小工具[email protected]:gfreewind/unit_perf.git。是用来定位内核代码的性能瓶颈工具,和一些辅助工具。大家觉得还可以的话,就给赞个星星。
它提供一个宏UP_PID_INFO_LOG用于打印指定PID的日志,pid可以通过proc来指定。
这样我在epoll_wait中增加了大量的日志。在Nginx启动后,通过proc指定就打印某个worker进程的日志。
最后发现epoll_wait是因为指定了无限等待时间,所以该worker进程一直在hang住。
Nginx让一个worker进程无限等待,这稍微颠覆了我对Nginx的认识。我认为Nginx一直都是使用无阻塞的系统调用,至少核心模块是这样处理的。那么为什么会出现这个现象呢?这时候,就需要思考,而不是动手了。
毫无疑问,accept_mutex是一个关键。它本身是用于均衡不同worker进程的负载。稍微阅读一点Nginx相关的 代码,就可以明白。在Nginx无法接收新连接请求时,一定是该轮到hang住的进程接收新连接请求。所以尽管其它进程没有hang住,但是它们是无法接 受新请求,而能够接收新请求的进程却hang住,这样就导致了问题的产生。
为什么hang住的进程无法接收到新的请求呢?这时还是思考优先。首先要勾画标准的内核TCP连接的过程,然后对比启用fastsocket 后,TCP连接的过程。很可能是这两者之间的区别,造成了问题。尤其是启用了spawn socket时,与标准流程的不同。spawn socket时,实际上为每个cpu都创建了一个本地listen 套接字的hash表,与全局的listen表区分开。这样一方面访问全局hash表时需要的锁,另一方面也做到了将TCP会话做到本地,可以尽量命中 cache。 对于同一个CPU,由于有两个listen表的存在,所以在收到新的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源码吧。
⑥ linux下运行程序内存不断增加如何查询是那段代码出现的问题!
如果是源代码级调试的话, 可选的方法有: 使用专门的调试工具, 譬如 Profile/Tuner 之类的; 使用现成通用工具, 譬如 strace 之类的; 在代码中加入条件状态输出, 可以根据变化找到热点 ...
⑦ 如何查看linux strace 排查定时器故障
可以使用yum -y install strace来安装,centos系统安装使用使用yum命令。 yum命令说明: yum命令是在Fedora和RedHat、centos以及SUSE中基于rpm的软件包管理器,它可以使系统管理人员交互和自动化地更细与管理RPM软件包,能够从指定的服务器自动...
⑧ sql连接不上服务器,错误信息如下:
在大多数情况下,卸载Visual
Studio和。NET
4和重新安装它们可以解决。
如果还不解决这个问题,你可以按照下面的步骤来解决此错误:
1。运行命令提示符,然后找到的DLL文件的位置,使用以下命令:
DIR
Microsoft.SqlServer.Diagnostics.STrace.dll/
S
2。复制DLL的名称与位置。
3。以管理员身份运行VS
2008的命令提示符。
4。执行以下命令
GACUTIL-
I“{Microsoft.SqlServer.Diagnostics.STrace.dll
在第1步找到的完整路径}”
如果在您的系统缺少DLL文件Microsoft.SqlServer.Diagnostics.STrace.dll,你可以复制从其他的地方。
⑨ sql sever2008连接不上服务器,显示错误信息如下
打开程序-->运行-->输入
net
start
mssqlserver
命令
然后再重启数据库试试