精华内容
下载资源
问答
  • Netstat命令详解 netstat命令怎样使用 如何关闭TIME_WAIT连接 如何统计web服务器的访问量 如果查看nginx的访问流量? 下面我们来看看它主要的用法和详解! (netstat -na 命令),本文主要是说Linux下的netstat...

    做计算机管理员,我们都必要了解一下netstat这个命令,它是一个查看网络连接状态的工具,在windows下也默认有这个工具。
    Netstat命令详解 netstat命令怎样使用 如何关闭TIME_WAIT连接 如何统计web服务器的访问量 如果查看nginx的访问流量?

    下面我们来看看它主要的用法和详解!
    (netstat -na 命令),本文主要是说Linux下的netstat工具,然后详细说明一下各种网络连接状态。
    netstat -nat |awk ‘{print $6}’|sort|uniq -c|sort -nr
    1.netstat命令详解
    其实我常用的是 netstat -tnl | grep 443 (查看443端口是否被占用),如果有当前是root用户,我喜欢用netstat -pnl | grep 443 (还可显示出占用本机443端口的进程PID)。
    netstat
    功能说明:显示网络状态。
    语  法:netstat [-acCeFghilMnNoprstuvVwx] [-A<网络类型>][--ip]
    补充说明:利用netstat指令可让你得知整个linux系统的网络情况。
    参  数:
    -a或–all 显示所有连线中的Socket。
    -A<网络类型>或–<网络类型> 列出该网络类型连线中的相关地址。
    -c或–continuous 持续列出网络状态。
    -C 或–cache 显示路由器配置的快取信息。
    -e或–extend 显示网络其他相关信息。
    -F或 –fib 显示FIB。
    -g或–groups 显示多重广播功能群组组员名单。
    -h或–help 在线帮助。
    -i 或–interfaces 显示网络界面信息表单。
    -l或–listening 显示监控中的服务器的Socket。
    -M 或–masquerade 显示伪装的网络连线。
    -n或–numeric 直接使用IP地址,而不通过域名服务器。
    -N 或–netlink或–symbolic 显示网络硬件外围设备的符号连接名称。
    -o或–timers 显示计时器。
    -p 或–programs 显示正在使用Socket的程序识别码和程序名称。
    -r或–route 显示 Routing Table。
    -s或–statistice 显示网络工作信息统计表。
    -t或–tcp 显示TCP 传输协议的连线状况。
    -u或–udp 显示UDP传输协议的连线状况。
    -v或–verbose 显示指令执行过程。
    -V 或–version 显示版本信息。
    -w或–raw 显示RAW传输协议的连线状况。
    -x或–unix 此参数的效果和指定”-A unix”参数相同。
    –ip或–inet 此参数的效果和指定”-A inet”参数相同。

    2.网络连接状态详解
    共有12中可能的状态,前面11种是按照TCP连接建立的三次握手和TCP连接断开的四次挥手过程来描述的。
    1)、LISTEN:首先服务端需要打开一个socket进行监听,状态为LISTEN./* The socket is listening for incoming connections. 侦听来自远方TCP端口的连接请求 */

    2)、SYN_SENT:客户端通过应用程序调用connect进行active open.于是客户端tcp发送一个SYN以请求建立一个连接.之后状态置为SYN_SENT./*The socket is actively attempting to establish a connection. 在发送连接请求后等待匹配的连接请求 */

    3)、SYN_RECV:服务端应发出ACK确认客户端的 SYN,同时自己向客户端发送一个SYN. 之后状态置为SYN_RECV/* A connection request has been received from the network. 在收到和发送一个连接请求后等待对连接请求的确认 */

    4)、ESTABLISHED: 代表一个打开的连接,双方可以进行或已经在数据交互了。/* The socket has an established connection. 代表一个打开的连接,数据可以传送给用户 */

    5)、FIN_WAIT1:主动关闭(active close)端应用程序调用close,于是其TCP发出FIN请求主动关闭连接,之后进入FIN_WAIT1状态./* The socket is closed, and the connection is shutting down. 等待远程TCP的连接中断请求,或先前的连接中断请求的确认 */

    6)、CLOSE_WAIT:被动关闭(passive close)端TCP接到FIN后,就发出ACK以回应FIN请求(它的接收也作为文件结束符传递给上层应用程序),并进入CLOSE_WAIT./* The remote end has shut down, waiting for the socket to close. 等待从本地用户发来的连接中断请求 */

    7)、FIN_WAIT2:主动关闭端接到ACK后,就进入了 FIN-WAIT-2 ./* Connection is closed, and the socket is waiting for a shutdown from the remote end. 从远程TCP等待连接中断请求 */

    8)、LAST_ACK:被动关闭端一段时间后,接收到文件结束符的应用程序将调用CLOSE关闭连接。这导致它的TCP也发送一个 FIN,等待对方的ACK.就进入了LAST-ACK ./* The remote end has shut down, and the socket is closed. Waiting for acknowledgement. 等待原来发向远程TCP的连接中断请求的确认 */

    9)、TIME_WAIT:在主动关闭端接收到FIN后,TCP 就发送ACK包,并进入TIME-WAIT状态。/* The socket is waiting after close to handle packets still in the network.等待足够的时间以确保远程TCP接收到连接中断请求的确认 */

    10)、CLOSING: 比较少见./* Both sockets are shut down but we still don’t have all our data sent. 等待远程TCP对连接中断的确认 */

    11)、CLOSED: 被动关闭端在接受到ACK包后,就进入了closed的状态。连接结束./* The socket is not being used. 没有任何连接状态 */

    12)、UNKNOWN: 未知的Socket状态。/* The state of the socket is unknown. */

    SYN: (同步序列编号,Synchronize Sequence Numbers)该标志仅在三次握手建立TCP连接时有效。表示一个新的TCP连接请求。
    ACK: (确认编号,Acknowledgement Number)是对TCP请求的确认标志,同时提示对端系统已经成功接收所有数据。
    FIN: (结束标志,FINish)用来结束一个TCP回话.但对应端口仍处于开放状态,准备接收后续数据。

    PS:在windows下有个小工具挺好的,TCPView is a Windows program that will show you detailed listings of all TCP and UDP endpoints on your system, including the local and remote addresses and state of TCP connections.见 http://technet.microsoft.com/en-us/sysinternals/bb897437 ; 当然如果要详细分析数据包,可选用sniffer、Wireshark等更强大的工具。

    参考资料:

    http://linux.sheup.com/linux/4/31225.html

    http://hi.baidu.com/mqbest_come_on/blog/item/18526dcef73d791a00e928e5.html

    http://www.daxigua.com/archives/1355

    系统连接状态篇:
    1.查看TCP连接状态
    netstat -nat |awk ‘{print $6}’|sort|uniq -c|sort -rn

    netstat -n | awk ‘/^tcp/ {++S[$NF]};END {for(a in S) print a, S[a]}’ 或
    netstat -n | awk ‘/^tcp/ {++state[$NF]}; END {for(key in state) print key,”\t”,state[key]}’
    netstat -n | awk ‘/^tcp/ {++arr[$NF]};END {for(k in arr) print k,”\t”,arr[k]}’

    netstat -n |awk ‘/^tcp/ {print $NF}’|sort|uniq -c|sort -rn

    netstat -ant | awk ‘{print $NF}’ | grep -v ‘[a-z]‘ | sort | uniq -c

    2.查找请求数请20个IP(常用于查找攻来源):
    netstat -anlp|grep 80|grep tcp|awk ‘{print $5}’|awk -F: ‘{print $1}’|sort|uniq -c|sort -nr|head -n20

    netstat -ant |awk ‘/:80/{split($5,ip,”:”);++A[ip[1]]}END{for(i in A) print A[i],i}’ |sort -rn|head -n20

    3.用tcpdump嗅探80端口的访问看看谁最高
    tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F”.” ‘{print $1″.”$2″.”$3″.”$4}’ | sort | uniq -c | sort -nr |head -20

    4.查找较多time_wait连接
    netstat -n|grep TIME_WAIT|awk ‘{print $5}’|sort|uniq -c|sort -rn|head -n20

    5.找查较多的SYN连接
    netstat -an | grep SYN | awk ‘{print $5}’ | awk -F: ‘{print $1}’ | sort | uniq -c | sort -nr | more

    6.根据端口列进程
    netstat -ntlp | grep 80 | awk ‘{print $7}’ | cut -d/ -f1

    网站日志分析篇1(Apache):

    1.获得访问前10位的ip地址
    cat access.log|awk ‘{print $1}’|sort|uniq -c|sort -nr|head -10
    cat access.log|awk ‘{counts[$(11)]+=1}; END {for(url in counts) print counts[url], url}’

    2.访问次数最多的文件或页面,取前20
    cat access.log|awk ‘{print $11}’|sort|uniq -c|sort -nr|head -20

    3.列出传输最大的几个exe文件(分析下载站的时候常用)
    cat access.log |awk ‘($7~/\.exe/){print $10 ” ” $1 ” ” $4 ” ” $7}’|sort -nr|head -20

    4.列出输出大于200000byte(约200kb)的exe文件以及对应文件发生次数
    cat access.log |awk ‘($10 > 200000 && $7~/\.exe/){print $7}’|sort -n|uniq -c|sort -nr|head -100

    5.如果日志最后一列记录的是页面文件传输时间,则有列出到客户端最耗时的页面
    cat access.log |awk ‘($7~/\.PHP/){print $NF ” ” $1 ” ” $4 ” ” $7}’|sort -nr|head -100

    6.列出最最耗时的页面(超过60秒的)的以及对应页面发生次数
    cat access.log |awk ‘($NF > 60 && $7~/\.php/){print $7}’|sort -n|uniq -c|sort -nr|head -100

    7.列出传输时间超过 30 秒的文件
    cat access.log |awk ‘($NF > 30){print $7}’|sort -n|uniq -c|sort -nr|head -20

    8.统计网站流量(G)
    cat access.log |awk ‘{sum+=$10} END {print sum/1024/1024/1024}’

    9.统计404的连接
    awk ‘($9 ~/404/)’ access.log | awk ‘{print $9,$7}’ | sort

    10. 统计http status.
    cat access.log |awk ‘{counts[$(9)]+=1}; END {for(code in counts) print code, counts[code]}'
    cat access.log |awk '{print $9}'|sort|uniq -c|sort -rn

    10.蜘蛛分析
    查看是哪些蜘蛛在抓取内容。
    /usr/sbin/tcpdump -i eth0 -l -s 0 -w - dst port 80 | strings | grep -i user-agent | grep -i -E 'bot|crawler|slurp|spider'

    网站日分析2(Squid篇)

    2.按域统计流量
    zcat squid_access.log.tar.gz| awk '{print $10,$7}' |awk 'BEGIN{FS="[ /]"}{trfc[$4]+=$1}END{for(domain in trfc){printf "%s\t%d\n",domain,trfc[domain]}}'

    效率更高的perl版本请到此下载:http://docs.linuxtone.org/soft/tools/tr.pl

    数据库
    1.查看数据库执行的sql
    /usr/sbin/tcpdump -i eth0 -s 0 -l -w - dst port 3306 | strings | egrep -i 'SELECT|UPDATE|DELETE|INSERT|SET|COMMIT|ROLLBACK|CREATE|DROP|ALTER|CALL'

    系统Debug分析篇

    1.调试命令
    strace -p pid

    2.跟踪指定进程的PID
    gdb -p pid



    问题起因:

    自己开发了一个服务器和客户端,通过短连接的方式来进行通讯,由于过于频繁的创建连接,导致系统连接数量被占用,不能及时释放。看了一下18888,当时吓到了。


    现象:

    1、外部机器不能正常连接SSH

    2、内向外不能够正常的ping通过,域名也不能正常解析。


    问题排查:

    通过  netstat  -anp | grep TIME_WAIT | wc -l  命令查看数量,发现TIME_WAIT的连接数量超过了18000太夸张了。

    1、初步怀疑是程序没有关闭连接,codereview了两遍,发现,已经正常关闭。

    2、网上看TIME_WAIT产生的原因,可能是因为服务器主动关闭连接导致TIME_WAIT产生。

    3、查找TIME_WAIT解决方案:

    发现系统存在大量TIME_WAIT状态的连接,通过调整内核参数解决,
    vi /etc/sysctl.conf

    编辑文件,加入以下内容:
    net.ipv4.tcp_syncookies = 1
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_tw_recycle = 1
    net.ipv4.tcp_fin_timeout = 30

    然后执行 /sbin/sysctl -p 让参数生效。


    经过配置后,暂时的问题是解决了,再查看TIME_WAIT数量快速下降。


    关键命令:

    1、netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"\t",state[key]}'

    会得到类似下面的结果,具体数字会有所不同:

    LAST_ACK 1
    SYN_RECV 14
    ESTABLISHED 79
    FIN_WAIT1 28
    FIN_WAIT2 3
    CLOSING 5
    TIME_WAIT 1669

    状态:描述
    CLOSED:无连接是活动的或正在进行
    LISTEN:服务器在等待进入呼叫
    SYN_RECV:一个连接请求已经到达,等待确认
    SYN_SENT:应用已经开始,打开一个连接
    ESTABLISHED:正常数据传输状态
    FIN_WAIT1:应用说它已经完成
    FIN_WAIT2:另一边已同意释放
    ITMED_WAIT:等待所有分组死掉
    CLOSING:两边同时尝试关闭
    TIME_WAIT:另一边已初始化一个释放
    LAST_ACK:等待所有分组死掉


    2、sysctl -a | grep time | grep wait
    net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait = 120
    net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 60
    net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 120



    展开全文
  • SqlServer中wait type类型及说明

    千次阅读 2015-12-14 16:20:11
    SqlServer产生block时,各种wait type类型及说明
    类型说明 
    ASYNC_DISKPOOL_LOCK当尝试同步并行的线程(执行创建或初始化文件等任务)时出现。
    ASYNC_IO_COMPLETION当某任务正在等待 I/O 完成时出现。
    ASYNC_NETWORK_IO当任务被阻止在网络之后时出现在网络写入中。
    BACKUP当任务作为备份处理的一部分被阻止时出现。
    BACKUP_OPERATOR当任务正在等待磁带装入时出现。若要查看磁带状态,请查询 sys.dm_io_backup_tapes。如果装入操作没有挂起,则该等待类型可能指示磁带机发生硬件问题。
    BACKUPBUFFER在备份任务等待数据或等待用来存储数据的缓冲区时发生。此类型不常见,只有当任务等待装入磁带时才会出现。
    BACKUPIO在备份任务等待数据或等待用来存储数据的缓冲区时发生。此类型不常见,只有当任务等待装入磁带时才会出现。
    BACKUPTHREAD当某任务正在等待备份任务完成时出现。等待时间可能较长,从几分钟到几个小时。如果被等待的任务正处于 I/O 进程中,则该类型不指示发生问题。
    BAD_PAGE_PROCESS当后台错误页记录器正在尝试避免每隔五秒以上的时间运行时出现。
    BROKER_RECEIVE_WAITFOR当 RECEIVE WAITFOR 正在等待时出现。如果没有准备接收的消息,则通常出现该状态。
    BROKER_TRANSMITTER当 SQL Server 2005 Service Broker 传输代码中出现非常短暂的等待时出现。
    BROKER_SHUTDOWN当按计划关闭 Service Broker 时出现。该状态出现的时间应当尽量短暂。
    BROKER_MASTERSTART当某任务正在等待 Service Broker 的主事件处理程序启动时出现。该状态出现的时间应当非常短暂。
    BROKER_EVENTHANDLER当某任务正在 Service Broker 的主事件处理程序中等待时出现。出现时间应该非常短暂。
    BROKER_REGISTERALLENDPOINTS在初始化 Service Broker 连接端点的过程中出现。出现时间应该非常短暂。
    BROKER_INIT当初始化每个活动数据库中的 Service Broker 时出现。该状态不应当频繁出现。
    BUILTIN_HASHKEY_MUTEX仅供内部使用。
    CHKPT在服务器启动时出现以通知检查点线程可以启动。
    CLR_AUTO_EVENT当某任务当前正在执行公共语言运行时 (CLR) 执行并且正在等待特殊的自动事件启动时出现。
    CLR_CRST当某任务当前正在执行 CLR 执行并且正在等待输入当前由另一项任务正在使用的任务的关键部分时出现。
    CLR_MANUAL_EVENT当某任务当前正在执行 CLR 执行并且正在等待特定手动事件启动时出现。
    CLR_MONITOR当某任务当前正在执行 CLR 执行并且正在等待获取用于监视器的锁时出现。
    CLR_RWLOCK_READER当某任务当前正在执行 CLR 执行并且正在等待读取器锁时出现。
    CLR_RWLOCK_WRITER当某任务当前正在执行 CLR 执行并且正在等待编写器锁时出现。
    CLR_TASK_JOIN当某任务当前正在执行 CLR 执行并且正在等待另一项任务结束时出现。当两任务之间具有联接时出现该等待状态。
    CLR_SEMAPHORE当某任务当前正在执行 CLR 执行并且正在等待信号量时出现。
    CMEMTHREAD当某任务正在等待线程安全内存对象时出现。当多项任务尝试分配来自同一个内存对象的内存而导致出现争用时,便可能延长等待时间。
    CXPACKET当尝试同步查询处理器交换迭代器时出现。如果针对该等待类型的争用成为问题时,可以考虑降低并行度。
    DEADLOCK_ENUM_MUTEX当死锁监视器和 sys.dm_os_waiting_tasks 尝试确保 SQL Server 不同时运行多个死锁搜索时出现。
    DEADLOCK_TASK_SEARCH当某任务正在等待内部死锁监视器同步时出现。对于该等待类型的事件,死锁监视器在大多数时间都处于空闲状态。
    DISABLE_VERSIONING当 SQL Server 轮询版本事务管理器,以查看最早的活动事务的时间戳是否晚于状态开始更改时的时间戳时出现。如果是,则所有在 ALTER DATABASE 语句运行之前启动的快照事务都已完成。当 SQL Server 通过 ALTER DATABASE 语句禁用版本控制时使用该等待状态。
    DISKIO_SUSPEND当某任务正在等待访问文件(外部备份处于活动状态)时出现。针对每个正在等待的用户进程报告该状态。每个用户进程大于五的计数可能指示外部备份需要太长时间才能完成。
    DROPTEMP当某任务在连接处于死锁状态的情况下进入睡眠时出现。该任务将在每次(指数化)重试删除操作前进行等待。
    DTC当某任务正在等待用于管理状态转换的事件时出现。该状态控制当 SQL Server 接收到 Microsoft 分布式事务处理协调器 (MS DTC) 服务不可用的通知之后执行 MS DTC 事务恢复的时间。该状态还说明在 SQL Server 启动了 MS DTC 事务提交并且 SQL Server 正在等待 MS DTC 提交完成时进行等待的任务。
    DTC_ABORT_REQUEST当 MS DTC 工作线程会话正在等待获得 MS DTC 事务的所有权时,在该会话中出现。当 MS DTC 拥有了事务后,该会话可以回滚事务。通常,该会话将等待另一个正在使用事务的会话。
    DTC_RESOLVE当恢复任务正在等待跨数据库事务中的 master 数据库以查询该事务的结果时出现。
    DTC_STATE当某任务正在等待对内部 MS DTC 全局状态对象的更改进行保护的事件时出现。该状态应当保持非常短的时间。
    DTC_TMDOWN_REQUEST DTC_TMDOWN_REQUEST当 SQL Server 接收到 MS DTC 服务不可用的通知时,在 MS DTC 工作线程会话中出现。首先,工作线程将等待 MS DTC 恢复进程启动。然后,工作线程等待获取其正在处理的分布式事务的结果。此过程可能一直执行,直到重新建立与 MS DTC 服务的连接。
    DTC_WAITFOR_OUTCOME当恢复任务等待 MS DTC 处于活动状态以启用准备好的事务的解决方法时出现。
    DUMP_LOG_COORDINATOR当主任务正在等待子任务生成数据时出现。该状态通常不会出现。长时间的等待指示出现意外的阻塞。应当对子任务进行调查。
    ENABLE_VERSIONING当 SQL Server 在声明数据库可以转换到 DBVER_ON 状态之前,等待该数据库中的所有更新事务完成时出现。当 SQL Server 通过 ALTER DATABASE 语句启用版本控制时使用该状态。
    EXCHANGE在同步查询处理器交换迭代器期间出现。很少发生。
    EXECSYNC在同步与交换迭代器无关的区域内的查询处理器期间出现。此类区域的示例包括位图、大型二进制对象 (LOB) 以及假脱机迭代器。LOB 可能经常使用该等待状态。位图和假脱机使用不应当导致争用。
    FCB_REPLICA_READ当同步快照(或 DBCC 创建的临时快照)稀疏文件的读取时出现。
    FCB_REPLICA_WRITE当同步快照(或 DBCC 创建的临时快照)稀疏文件的页推送或页请求时出现。
    HTTP_ENDPOINT_COLLCREATE在启动时出现以创建端点集合。该状态并非特定于 HTTP。
    HTTP_ENUMERATION在启动时出现,以枚举 HTTP 端点以启动 HTTP。
    IMPPROV_IOWAIT当 SQL Server 等待 Bulkload I/O 完成时出现。
    IO_AUDIT_MUTEX仅供内部使用。
    LATCH_DT针对分布式事务闩锁的闩锁等待。它不包括缓冲区闩锁或事务标记闩锁。
    LATCH_EX针对排他闩锁的闩锁等待。不包括缓冲区闩锁或事务标记闩锁。
    LATCH_KP针对保留闩锁的闩锁等待。不包括缓冲区闩锁或事务标记闩锁。
    LATCH_NL针对空闩锁的闩锁等待。不包括缓冲区闩锁或事务标记闩锁。
    LATCH_SH针对共享闩锁的闩锁等待。不包括缓冲区闩锁或事务标记闩锁。
    LATCH_UP针对更新闩锁的闩锁等待。不包括缓冲区闩锁或事务标记闩锁。
    LAZYWRITER_SLEEP当惰性编写器被挂起时出现。正在等待的后台任务所用时间的度量值。在查找用户阻隔点所时不要考虑该状态。
    LCK_M_BU当某任务正在等待获取大容量更新锁时出现。
    LCK_M_IS LCK_M_IU当某任务正在等待获取意向共享锁时出现。
    LCK_M_IU当某任务正在等待获取意向更新锁时出现。
    LCK_M_IX当某任务正在等待获取意向排他锁时出现。
    LCK_M_RIn_NL当某任务正在等待获取当前键值上的 NULL 锁以及当前键和上一个键之间的插入范围锁时出现。键上的 NULL 锁是指立即释放的锁。
    LCK_M_RIn_S当某任务正在等待获取当前键值上的共享锁以及当前键和上一个键之间的插入范围锁时出现。
    LCK_M_RIn_U任务正在等待获取当前键值上的更新锁以及当前键和上一个键之间的插入范围锁。
    LCK_M_RIn_X当某任务正在等待获取当前键值上的排他锁以及当前键和上一个键之间的插入范围锁时出现。
    LCK_M_RS_S当某任务正在等待获取当前键值上的共享锁以及当前键和上一个键之间的共享范围锁时出现。
    LCK_M_RS_U当某任务正在等待获取当前键值上的更新锁以及当前键和上一个键之间的更新范围锁时出现。
    LCK_M_RX_S当某任务正在等待获取当前键值上的共享锁以及当前键和上一个键之间的排他范围锁时出现。
    LCK_M_RX_U当某任务正在等待获取当前键值上的更新锁以及当前键和上一个键之间的排他范围锁时出现。
    LCK_M_RX_X当某任务正在等待获取当前键值上的排他锁以及当前键和上一个键之间的排他范围锁时出现。
    LCK_M_S当某任务正在等待获取共享锁时出现。
    LCK_M_SCH_M当某任务正在等待获取架构修改锁时出现。
    LCK_M_SCH_S当某任务正在等待获取架构共享锁时出现。
    LCK_M_SIU当某任务正在等待获取共享意向更新锁时出现。
    LCK_M_SIX当某任务正在等待获取共享意向排他锁时出现。
    LCK_M_U当某任务正在等待获取更新锁时出现。
    LCK_M_UIX当某任务正在等待获取更新意向排他锁时出现。
    LCK_M_X当某任务正在等待获取排他锁时出现。
    DBMIRROR_SEND当某任务正在等待清除网络层的通信积压以便能够发送消息时出现。指示通信层正在开始重载并影响数据库镜像数据吞吐量。Microsoft 支持策略不适用于 SQL Server 2005 的数据库镜像功能。根据默认设置,数据库镜像当前已被禁用,但通过使用跟踪标志 1400 作为启动参数可以启用该功能,该功能仅供评估使用。(有关跟踪标志的详细信息,请参阅跟踪标志 (Transact-SQL)。)不要在生产环境中使用数据库镜像,Microsoft 支持服务不支持使用数据库镜像的数据库或应用程序。在 SQL Server 2005 中包括数据库镜像文档仅供评估使用,SQL Server 2005 支持和升级文档策略不适用于数据库镜像文档。
    DBMIRRORING_CMD当某任务正在等待日志记录刷新到磁盘时出现。该等待状态应当保留较长的时间。
    LOGBUFFER当某任务正在等待日志缓冲区的空间以存储日志记录时出现。连续的高值可能指示日志设备无法跟上服务器生成的日志量。
    LOGMGR当某任务正在等待任何未完成的日志 I/O 在关闭日志之前完成时出现。
    LOGMGR_FLUSH仅供内部使用。
    LOGMGR_RESERVE_APPEND当某任务正在等待查看日志截断是否能释放日志空间以使该任务能写入新的日志记录时出现。
    LOWFAIL_MEMMGR_QUEUE当某任务正在从因内存不足而失败的队列中删除页时出现。
    MSQL_DQ当某任务正在等待分布式查询操作完成时出现。 使用该状态检测潜在的多个活动的结果集 (MARS) 应用程序死锁。该等待将在分布式查询调用完成时结束。
    MSQL_XACT_MGR_MUTEX当某任务正在等待获取会话事务管理器的所有权以执行会话级别事务操作时出现。互斥体用于同步同一个会话中不同线程的事务管理器对象的使用。
    MSQL_XP当某任务正在等待扩展存储过程结束时出现。SQL Server 使用该等待状态检测潜在的 MARS 应用程序死锁。该等待将在扩展存储过程调用结束时停止。
    OLEDB当 SQL Server 调用 Microsoft SQL Native Client OLEDB 访问接口时发生。该状态不用于同步。
    PAGEIOLATCH_DT在任务等待 I/O 请求中缓冲区的闩锁时发生。闩锁请求处于“破坏”模式。
    PAGEIOLATCH_EX在任务等待 I/O 请求中缓冲区的闩锁时发生。闩锁请求处于“独占”模式。
    PAGEIOLATCH_KP在任务等待 I/O 请求中缓冲区的闩锁时发生。闩锁请求处于“保持”模式。
    PAGEIOLATCH_NL在任务等待 I/O 请求中缓冲区的闩锁时发生。闩锁请求处于“空”模式。
    PAGEIOLATCH_SH在任务等待 I/O 请求中缓冲区的闩锁时发生。闩锁请求处于“共享”模式。
    PAGEIOLATCH_UP在任务等待 I/O 请求中的缓冲区闩锁时发生。闩锁请求处于“更新”模式。
    PAGELATCH_DT在任务等待 I/O 请求中缓冲区的闩锁时发生。闩锁请求处于“破坏”模式。
    PAGELATCH_EX在任务等待不处于 I/O 请求中的缓冲区闩锁时发生。闩锁请求处于“独占”模式。
    PAGELATCH_KP在任务等待不处于 I/O 请求中的缓冲区闩锁时发生。闩锁请求处于“保持”模式。
    PAGELATCH_NL在任务等待不处于 I/O 请求中的缓冲区闩锁时发生。闩锁请求处于“空”模式。
    PAGELATCH_SH在任务等待不处于 I/O 请求中的缓冲区闩锁时发生。闩锁请求处于“共享”模式。
    PAGELATCH_UP在任务等待不处于 I/O 请求中的缓冲区闩锁时发生。闩锁请求处于“更新”模式。
    PRINT_ROLLBACK_PROGRESS用于等待用户进程在已通过 ALTER DATABASE 终止子句完成转换的数据库中结束。有关详细信息,请参阅 ALTER DATABASE (Transact-SQL)。
    PWAIT_QPJOB_WAITFOR_ABORT指示异步统计信息自动更新在运行时通过调用 KILL 命令而取消。目前更新已完成,但是在终止线程消息协调完成之前一直于挂起状态。这是一个普通而少见的状态,应当非常短暂。正常情况下,该值不到一秒钟。
    PWAIT_QPJOB_KILL指示异步统计信息自动更新在开始运行时通过调用 KILL 命令而取消。终止线程处于挂起状态,等待它开始侦听 KILL 命令。正常情况下,该值不到一秒钟。
    QRY_MEM_GRANT_INFO_MUTEX当查询执行内存管理尝试控制对静态授予信息列表的访问时出现。该状态列出当前已批准的内存请求以及正在等待的内存请求的有关信息。该状态是一个简单的访问控制状态。该状态始终不应当等待较长的时间。如果未释放互斥体,则所有占用内存的新查询都将停止响应。
    QUERY_NOTIFICATION_MGR_MUTEX保护查询通知管理器中的垃圾收集队列。
    QUERY_NOTIFICATION_SUBSCRIPTION_MUTEX基于每个订阅控制事务的互斥体。这表示每个订阅具有一个互斥体并使用该互斥体更改其事务状态。
    QUERY_NOTIFICATION_TABLE_MGR_MUTEX仅供内部使用。
    QUERY_NOTIFICATION_UNITTEST_MUTEX仅供内部使用。
    SQLTRACE_BUFFER_FLUSH当某任务正在等待后台任务将跟踪缓冲区每隔四秒刷新到磁盘时出现

    展开全文
  • thrift数据类型

    千次阅读 2012-12-12 16:45:23
    Thrift通过接口定义语言 (interface definition language,IDL) 来定义数据类型和服务,Thrift接口定义文件由Thrift代码编译器生成thrift目标语言的代码(目前支持C++,Java, Python, PHP, Ruby, Erlang,

    1 前言

      Thrift是facebook技术核心框架之一,不同开发语言开发的服务可以通过该框架实现通信。Thrift通过接口定义语言 (interface definition language,IDL) 来定义数据类型和服务,Thrift接口定义文件由Thrift代码编译器生成thrift目标语言的代码(目前支持C++,Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk和OCaml),并由生成的代码负责RPC协议层和传输层的实现。

      简而言之,开发者只需准备一份thrift脚本,通过thrift code generator(像gcc那样输入一个命令)就能生成所要求的开发语言代码。不支持windows。

      Thrift侧重点是构建跨语言的可伸缩的服务,特点就是支持的语言多,同时提供了完整的RPC service framework,可以很方便的直接构建服务,不需要做太多其他的工作。服务端可以根据需要编译成simple | thread-pool | threaded | nonblocking等方式;

      本文档参考:Thrift typesThrift IDL, Thrift:The Missing Guide.

    2 语法参考

     2.1 类型

      Thrift类型系统包括预定义基本类型,用户自定义结构体,容器类型,异常和服务定义。

     2.1.1 基本类型

    • bool: 布尔值 (true or false), one byte

    • byte: 有符号字节

    • i16: 16位有符号整型

    • i32: 32位有符号整型

    • i64: 64位有符号整型

    • double: 64位浮点型

    • string: Encoding agnostic text or binary string

    Note that: Thrift不支持无符号整型,因为Thrift目标语言没有无符号整型,无法转换。

     2.1.2 容器(Containers)

      Thrift容器与流行编程语言的容器类型相对应,采用Java泛型风格。它有3种可用容器类型:

    • list<t1>: 元素类型为t1的有序表,容许元素重复。(有序表ordered list不知道如何理解?排序的?c++的vector不排序)

    • set<t1>:元素类型为t1的无序表,不容许元素重复。

    • map<t1,t2>: 键类型为t1,值类型为t2的kv对,键不容许重复。

      容器中元素类型可以是除了service外的任何合法Thrift类型(包括结构体和异常)。

     2.1.3 结构体和异常(Structs and Exceptions)

      Thrift结构体在概念上类似于(similar to)C语言结构体类型--将相关属性封装在一起的简便方式。Thrift结构体将会被转换成面向对象语言的类。

      异常在语法和功能上类似于(equivalent to)结构体,差别是异常使用关键字exception而不是struct声明。但它在语义上不同于结构体:当定义一个RPC服务时,开发者可能需要声明一个远程方法抛出一个异常。

      结构体和异常的声明将在下一节介绍。

     2.1.4 服务(Services)

      服务的定义方法在语义(semantically)上等同于面向对象语言中的接口。Thrift编译器会产生执行这些接口的client和server stub。具体参见下一节。

     2.2 类型定义(Typedef)

      Thrift支持C/C++类型定义。

      typedef i32 MyInteger // a  typedef T ReT // b

      说明:a.  末尾没有逗号。b.   struct也可以使用typedef。

     2.3 枚举(Enums)

      很多语言都有枚举,意义都一样。比如,当定义一个消息类型时,它只能是预定义的值列表中的一个,可以用枚举实现。

    enum TweetType {TWEET, // (1)   RETWEET = 2// (2)DM = 0xa// (3)   REPLY} // (4)struct Tweet {1: required i32 userId;2: required string userName;3: required string text;4: optional Location loc;5: optional TweetType tweetType = TweetType.TWEET; // (5)16: optional string language = "english"}

      说明:

      (1).  编译器默认从0开始赋值

      (2).  可以赋予某个常量某个整数

      (3).  允许常量是十六进制整数

      (4).  末尾没有分号

      (5).  给常量赋缺省值时,使用常量的全称

      注意,不同于protocal buffer,thrift不支持枚举类嵌套,枚举常量必须是32位的正整数

     2.4 注释(Comment)

      Thrift支持shell风格, C多行风格和Java/C++单行风格。

    # This is a valid comment.// C++/Java style single-line comments work just as well.

     2.5 名字空间(Namespace)

      Thrift中的命名空间类似于C++中的namespace和java中的package,它们提供了一种组织(隔离)代码的简便方式。名字空间也可以用于解决类型定义中的名字冲突。

      由于每种语言均有自己的命名空间定义方式(如python中有module), thrift允许开发者针对特定语言定义namespace:  

    namespace cpp com.example.project // (1)namespace java com.example.project // (2)namespace php com.example.project

      (1). 转化成namespace com { namespace example { namespace project {

      (2).  转换成package com.example.project


     2.6 Includes

      便于管理、重用和提高模块性/组织性,我们常常分割Thrift定义在不同的文件中。包含文件搜索方式与c++一样。Thrift允许文件包含其它thrift文件,用户需要使用thrift文件名作为前缀访问被包含的对象,如:

    include "tweet.thrift" // (1)...struct TweetSearchResult {1: tweet.Tweet tweet; // (2)}

      说明:

      (1).  thrift文件名要用双引号包含,末尾没有逗号或者分号

      (2).  注意tweet前缀

     2.7 常量(Constant)

      Thrift允许定义跨语言使用的常量,复杂的类型和结构体可使用JSON形式表示。

    const i32 INT_CONST = 1234// (1)

      说明:

      (1) 分号可有可无。支持16进制。

     2.8 结构体定义(Defining Struct)

      struct是Thrift IDL中的基本组成块,由域组成,每个域有唯一整数标识符,类型,名字和可选的缺省参数组成。如定义一个类似于Twitter服务:

    struct Tweet {1: required i32 userId; // (1)2: required string userName; // (2)3: required string text;4: optional Location loc; // (3)16: optional string language = "english" // (4)}struct Location { // (5)1: required double latitude;2: required double longitude;}

     (1) 每个域有一个唯一的正整数标识符;

     (2) 每个域可标识为required或optional;

     (3) 结构体可以包含其它结构体

     (4) 域可有默认值,与required或optional无关。

     (5) Thrift文件可以定义多个结构体,并在同一文件中引用,也可加入文件限定词在其它Thrift文件中引用。

      如上所见,消息定义中的每个域都有一个唯一数字标签,这些数字标签在传输时用来确定域,一旦使用消息类型,标签不可改变。(随着项目的进展,可以要变更Thrift文件,最好不要改变原有的数字标签

      规范的struct定义中的每个域均会使用required或者optional关键字进行标识。如果required标识的域没有赋值,Thrift将给予提示;如果optional标识的域没有赋值,该域将不会被序列化传输;如果某个optional标识域有缺省值而用户没有新赋值,则该域的值一直为缺省值;如果某个optional标识域有缺省值或者用户已经重新赋值,而不设置它的__isset为true,也不会被序列化传输。(不被序列化传输的后果是什么?为空为零?还是默认值,下次试试)

      与services不同,结构体不支持继承。

    2.9 服务定义(Defining Services)

      在流行的序列化/反序列化框架(如protocal buffer)中,Thrift是少有的提供多语言间RPC服务的框架。这是Thrift的一大特色。

      Thrift编译器会根据选择的目标语言为server产生服务接口代码,为client产生stubs。

    service Twitter {// A method definition looks like C code. It has a return type, arguments,// and optionally a list of exceptions that it may throw. Note that argument// lists and exception list are specified using the exact same syntax as// field lists in structs.void ping(), // (1)bool postTweet(1:Tweet tweet); // (2)TweetSearchResult searchTweets(1:string query); // (3)// The 'oneway' modifier indicates that the client only makes a request and// does not wait for any response at all. Oneway methods MUST be void.oneway void zip() // (4)}
     (1) 有点乱,接口支持以逗号和分号结束;
     (2) 参数可以是基本类型和结构体;(参数是cosnt的,转换为c++语言是const&)
     (3) 返回值同参数一样;
     (4) 返回值是void,注意oneway;

    Note that:参数列表的定义与结构体一样。服务支持继承。

     

    源地址:http://www.cnblogs.com/tianhuilove/archive/2011/09/05/2167669.html 

    展开全文
  • 假设该程序不断在向标准输出流和标准错误流写数据,而JVM不读取的话,当缓冲区满之后将无法继续写入数据,最终造成阻塞在waitfor()这里。 需要注意读取程序的stdout和stderr都是阻塞的操作,这意味着必须在两个...

    在编写Java程序时,有时候我们需要调用其他的诸如exe,shell这样的程序或脚本。

    Java虚拟机执行Runtime.getRuntime().exec()方法的过程是:首先克隆一个和当前虚拟机拥有一样环境变量的进程,再用这个进程去执行外部命令,最后再退出这个进程。如果频繁执行这个操作,系统消耗会很大,不仅是CPU,内存负担也很大。

    在Java中提供了两种方法来启动其他程序:

    1. 使用Runtime的exec()方法
    2. 使用ProcessBuilder的start()方法 。

    Runtime和ProcessBulider提供了不同的方式来启动程序,设置启动参数、环境变量和工作目录。但是这两种方法都会返回一个用于管理操作系统进程的Process对象,再调用Process.waitFor()来等待命令执行结束,获取执行结果。

    然而这样简单的调用也是有坑的,有几个地方需要小心留意

    ###1、命令拼接空格问题(推荐使用ProcessBuilder) ####1.1 通过Runtime.getRuntime().exec()方式

    String htmlName = CONTRACT_PATH + File.separator + cid + HTML_POSTFIX;
    String pdfName = CONTRACT_PATH + File.separator + cid + PDF_POSTFIX;
    String command = wkhtmltopdf + " " + htmlName + " " + pdfName;
    Process proc = Runtime.getRuntime().exec(command);
    

    这种方式下,可以通过字符串直接拼接命令,命令中可以包含有空格。

    ####1.2 通过ProcessBuilder(command).start()方式

    让我们先来看一下ProcessBuilder类的方法,这里传入的command为可变参数类型
    public ProcessBuilder(String... command) {
            this.command = new ArrayList<>(command.length);
            for (String arg : command)
                this.command.add(arg);
        }
    

    当通过这种方式调用的时候,必须注意,不能将命令拼接成字符串传入,需要将各个参数分别传入,如:

    ProcessBuilder pb = new ProcessBuilder(wkhtmltopdf, htmlName, pdfName);
    Process process = pb.start();
    

    如果在这种方式下,你传的command是经过拼接的字符串命令(一般情况下是含有空格的),会报错:

    java.io.IOException: Cannot run program "C:/getapkinfo/aapt.exe d": CreateProcess error=2, ϵͳÕҲ»µ½ָ¶

    ###2、调用系统命令的阻塞问题 假如现在我需要在java中调用本地系统的wkhtmltopdf,将html文档转化为pdf文档,并对pdf文档做其他处理。那么在对pdf文档做其他处理之前,我必须要等系统命令对html转pdf的完成,这里就存在一个阻塞的问题。

    JDK对waitFor方法的解释是:

    public abstract int waitFor() throws InterruptedException

    导致当前线程等待,如有必要,一直要等到由该 Process 对象表示的进程已经终止。如果已终止该子进程,此方法立即返回。如果没有终止该子进程,调用的线程将被阻塞,直到退出子进程。

    返回: 进程的出口值。根据惯例,0 表示正常终止。

    抛出: InterruptedException - 如果当前线程在等待时被另一线程中断,则停止等待,抛出 InterruptedException。

    因为本地的系统对标准输入和输出所提供的缓冲池有限,所以错误的对标准输出快速的写入和从标准输入快速的读入都有可能造成子进程死锁。问题的关键在缓冲区这个地方:可执行程序的标准输出比较多,而运行窗口的标准缓冲区不够大,所以发生阻塞。接着来分析缓冲区,当Runtime对象调用exec(cmd)后,JVM会启动一个子进程,该进程会与JVM进程建立三个管道连接:标准输入,标准输出和标准错误流。假设该程序不断在向标准输出流和标准错误流写数据,而JVM不读取的话,当缓冲区满之后将无法继续写入数据,最终造成阻塞在waitfor()这里。

    需要注意读取程序的stdout和stderr都是阻塞的操作,这意味着必须在两个线程里分别读取,而不是在一个线程里一次读取,否则还是有可能出现阻塞的情况:比如先读取stdout再读取stderr,如果程序的stderr输出已经填满了缓冲区,程序就会阻塞不继续执行,但是java线程又阻塞在读取stdout上,只有stdout结束了才会去读取stderr。结果就是互相等待着的过程中哦给你程序卡死了。 为了不让程序变得过于复杂,我们可以把程序的stderr重定向到stdout中,这样只要读取stdout一个就好了。缺点就是没有区分出错的输出信息和正常的输出信息。

    ** 但是在其中过程中真正起关键作用的缓冲区是getErrorStream()对应的那个缓冲区没有被清空,意思就是说其实只要及时读取标准错误流缓冲区的数据程序就不会被block。**

    这里提供一个系统调用的工具类,代码如下:

    import org.apache.commons.io.IOUtils;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.concurrent.TimeoutException;
    
    /**
     * 一个进程调用工具.
     * Created by chenyh on 2016/8/5.
     */
    public class ProcessUtils {
        /**
         * 运行一个外部命令,返回状态.若超过指定的超时时间,抛出TimeoutException
         *
         */
        public static ProcessStatus execute(final long timeout, final String... command)
                throws IOException, InterruptedException, TimeoutException {
    
            ProcessBuilder pb = new ProcessBuilder(command);
            pb.redirectErrorStream(true);
            Process process = pb.start();
    
            Worker worker = new Worker(process);
            worker.start();
            ProcessStatus ps = worker.getProcessStatus();
            try {
                worker.join(timeout);
                if (ps.exitCode == ProcessStatus.CODE_STARTED) {
                    // not finished
                    worker.interrupt();
                    throw new TimeoutException();
                } else {
                    return ps;
                }
            } catch (InterruptedException e) {
                // canceled by other thread.
                worker.interrupt();
                throw e;
            } finally {
                process.destroy();
            }
        }
    
    
        private static class Worker extends Thread {
            private final Process process;
            private ProcessStatus ps;
    
            private Worker(Process process) {
                this.process = process;
                this.ps = new ProcessStatus();
            }
    
            public void run() {
                try {
                    InputStream is = process.getInputStream();
                    try {
                        ps.output = IOUtils.toString(is);
                    } catch (IOException ignore) { }
                    ps.exitCode = process.waitFor();
                } catch (InterruptedException e) {
                    Thread.currentThread().interrupt();
                }
            }
    
            public ProcessStatus getProcessStatus() {
                return this.ps;
            }
        }
    
        public static class ProcessStatus {
            public static final int CODE_STARTED = -257;
            public volatile int exitCode;
            public volatile String output;
        }
    }
    

    Ref:

    转载于:https://my.oschina.net/hzchenyh/blog/727905

    展开全文
  • 返回执行的线程所遇到的所有等待的相关信息。可以使用该聚合视图来诊断 SQL Server 以及特定查询...数据类型 说明 wait_type nvarchar(60) 等待类型的名称。 waiting_tasks_count bigint 该等待类
  • UE4 统计数据命令描述

    千次阅读 2019-06-11 18:00:20
    统计数据类型 Cycle Counter Stat(循环计数器统计数据) Memory Counter Stat(内存计数器统计数据) Accumulator Stat(累加器统计数据) Counter Stat(计数器统计数据) Standalone S...
  • SQL 各种锁等待类型 wait type

    千次阅读 2014-03-18 06:10:58
    下表列出各任务所遇到的等待类型。 等待类型 说明  ASYNC_DISKPOOL_LOCK  当尝试同步并行的线程(执行创建或初始化文件等任务)时出现。 ASYNC_IO_COMPLETION  当某任务正在等待 I/O 完成时出现。 ...
  • MaxCompute基本概念和数据类型

    千次阅读 2020-04-17 11:17:36
    MaxCompute数据类型 数据类型版本 MaxCompute 2.0推出之后,MaxCompute中包含的数据类型版本存在三个: MaxCompute 1.0数据类型 MaxCompute 2.0数据类型 MaxCompute兼容Hive数据类型 MaxCompute设置数据类型版本...
  • VFP命令,DBF数据内部函数

    千次阅读 2018-09-01 10:36:12
    VFP命令可在VFP命令窗口中单独运行,也可编制成程序成批运行,由命令和函数编制的程序可对数据库系统进行自动、复杂的操作,使数据库系统应用起来更加友好、方便。 ¨ VFP常用命令分类表     类别 ...
  • 你遇到过TIME_WAIT的问题吗? 我相信很多都遇到过这个问题。一旦有用户在喊:网络变慢了。...然后,做的第一件事情就是:打开Google或者Bing,输入关键词:too many time wait。一定能找到解决方案,而排在最前面
  • 文章目录linux 系统命令总结大全关于作者**作者介绍**0.IP 地址相关命令0.1 ifconfig 命令 ---显示网络设备信息02.ip 命令 ---显示与操作路由03.dhclient 命令 --- 动态获取或释放IP地址04.nmtui ---界面修改网卡...
  • Android调试命令总结

    千次阅读 2015-07-29 17:10:47
    学习Android开发我们会用到很多的调试命令,但是,很多同学对于Android中提供的命令都不是很熟悉,这里我做一个详细的总结,方便大家查阅。...
  • sysprocesses wait type

    千次阅读 2013-08-18 13:45:09
    LOCK waittypes The following table lists the LOCK waittypes in the master.dbo.sysprocesses system table in SQL Server 2000 and SQL Server 2005. Collapse this tableExpand this table Last
  • R语言数据输入输出

    万次阅读 2017-01-08 10:55:21
    R语言数据输入输出管理与程序设计方法。包括读取数据、文件,写到文件。
  • Linux - Shell基本命令

    千次阅读 2015-05-13 09:31:37
    Shell基本命令几个基本的shell命令,用ssh管理主机必备。 1.ls 列出目录下的文件,不同类型的文件颜色不同,例如蓝色是文件夹,白色是文件[root@restoretmp steph]# ls file.html public_html test [root@...
  • iostat命令详解

    万次阅读 2014-12-24 18:07:15
    iostat命令详解iostat用于输出CPU和磁盘输入输出、分区、网络文件系统NFS相关的统计信息。iostat命令用于监控系统设备的输入/输出情况,并生成报告,以便根据统计报告修改系统配置,获取更优的性能。命令格式:...
  • Docker常用命令超细介绍

    千次阅读 2019-12-25 20:33:56
      工欲善其事必先利其器,本文我们首先来给大家介绍下docker中的常用命令,只用对这些常用命令非常熟悉我们才能更好的来使用docker。 1.帮助命令   首先我们来看看docker中的帮助命令 命令 说明 ...
  • 第12章 数据类型选择一个正确的数据类型,这看上去再容易不过了,但我屡屡见得选择不当的情况。要选择什么类型来存储你的数据,这是一个最基本的决定,而且这个决定会在以后的数年间影响着你的应用和数据。选择适当...
  • 原文地址:系统调优,你所不知道的TIME_WAIT和CLOSE_WAIT 作者:壹頁書http://mp.weixin.qq.com/s?__biz=MzA3MzYwNjQ3NA==&amp;mid=403319808&amp;idx=1&amp;sn=ddae082f5b844d040b9ab23c9c0eb778&...
  • Logstash——配置介绍,数据输入配置(input)

    千次阅读 多人点赞 2020-04-20 21:18:42
    而Logstash所支持的数据源远远不止这些,这里对Logstash的数据输入配置进行一个介绍。 Logstash配置内容 Logstash的配置主要分为三部分:数据输入部分、数据处理部分、数据输出部分。这三部分的定义覆盖了数据整个...
  • cluster命令用法总结

    万次阅读 2012-09-23 02:40:27
    群集命令概述可以在命令提示符下,使用群集命令来创建或管理服务器群集。也可以从命令脚本调用程序 Cluster.exe,使许多群集管理任务自动化。在运行 Windows Server 2003 家族的计算机上提供了 Cluster.exe。可以从...
  • Linux signal, wait, waitpid 函数

    千次阅读 2016-10-15 21:29:00
    信号就是告知某个进程发生了某件事情的通知,有时也称为软件中断,可以由一个进程发给另一个进程,也可以由内核发给进程。一、signal 函数1、定义#include ... * 通过kill -l 可以查看系统所有信号类型; * 其中SIGK
  • android压力测试命令Monkey

    万次阅读 2015-09-25 15:22:28
    它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。 二、 Monkey的特征  1、测试...
  • Linux常用命令复习

    千次阅读 多人点赞 2021-06-30 21:47:38
    写一篇博客做个自己常用命令的回忆复习吧。 netstat netstat命令用于显示网络状态。 netstat -a 显示详细的网络状况 netstat -n 直接使用IP地址,不通过域名服务器 netstat -t 显示TCP传输协议的连接情况 netstat -...
  • PostgreSQL 常用命令速查表

    千次阅读 多人点赞 2020-09-21 22:33:01
    本文为大家精心整理了 PostgreSQL 数据库中最常用的语句和命令,并且制作了 PDF 版本的命令速查表。具体内容包括 psql 工具连接服务器和基本使用,角色、用户和组以及权限管理,数据库和模式管理,数据表,索引,表...
  • Linux(1)常用命令

    万次阅读 2019-04-29 21:57:49
    文章目录1、ls命令2、cd命令3、pwd命令4、mkdir命令5、rm命令6、rmdir命令7、mv命令8、cp命令9、cat命令10、more命令11、less命令12、head命令13、tail命令14、which命令15、whereis命令16、locate命令17、find命令...
  • C语言实现su命令

    千次阅读 2017-10-15 21:32:42
    su命令的功能为切换用户,首先看一下系统su命令的效果: su命令为:su+用户名,没有输入参数时默认为root用户。...通过设置termios类型数据结构中的值和使用一小组函数调用,就可以对终端接口进行
  • jdk安装后会自带一些小工具,jmap命令(Java Memory Map)是其中之一。主要用于打印指定Java进程(或核心文件、远程调试服务器)的共享对象内存映射或堆内存细节。 jmap命令可以获得运行中的jvm的堆的快照,从而可以...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 55,527
精华内容 22,210
关键字:

wait命令输入的数据类型是