ASrequest_logical_readsMSSQL2008配置性能监控脚本PerfStats

mssql2008  时间:2021-02-22  阅读:()

--TODO: schedulerstats

--------------------

--

IF'%runmode%' !='REALTIME'USEtempdb

GO

SET NOCOUNTON

SETQUOTED_IDENTIFIER ON

GO

IF(CHARINDEX('10.00',@@VERSION)=0)BEGIN

PRINT' '

PRINT'****NOTE ****'

PRINT '**** This script is for SQL Server 2008. Errors are expected when run on earl ierversions. '

PRINT'**************'

PRINT' '

END

GO

PRINT'Starting SQL Server 2008 Perf Stats Script. . . '

SET LANGUAGE us_engl ish

PRINT'--Script Source--'

SELECT 'SQL 2008 Perf Stats Script' AS script_name, '$Revision: 12 $ ($Change: 3355 $)' ASrevision

PRINT' '

PRINT'--Scriptand Environment Detai ls--'

PRINT'Name Value'

PRINT'------------------------ ---------------------------------------------------'

PRINT'SQLServer Name '+@@SERVERNAME

PRINT'Machine Name '+CONVERT(varchar,SERVERPROPERTY('MachineName'))PRINT'SQLVersion (SP) '+CONVERT(varchar,SERVERPROPERTY('ProductVersion' ))+'('+CONVERT(varchar,SERVERPROPERTY('ProductLevel '))+') '

PRINT'Edition '+CONVERT(varchar,SERVERPROPERTY('Edition'))PRINT'ScriptName SQL2008 PerfStatsScript'

PRINT'Script Fi le Name $Fi le:SQL_2005_Perf_Stats.sql $'

PRINT'Revision $Revision: 12$($Change:3355$)'

PRINT'Last Modified $Date:2007/09/25 10:03:24$'

PRINT'Script BeginTime '+CONVERT(varchar(30),GETDATE(), 126)

PRINT'Current Database '+DB_NAME()

PRINT' '

GO

IFOBJECT_ID('sp_perf_stats10', 'P') IS NOT NULL

DROP PROCEDURE sp_perf_stats10

GO

CREATE PROCEDURE sp_perf_stats10@appname sysname='PSSDIAG',@runtime datetimeAS

SETNOCOUNT ON

DECLARE@msg varchar(100)

DECLARE@querystarttime datetime

DECLARE@queryduration int

DECLARE@qrydurationwarnthreshold int

DECLARE@servermajorversion int

DECLARE@cpu_time_start bigint,@elapsed_time_start bigint

DECLARE@sql nvarchar(max)

DECLARE@cte nvarchar(max)

DECLARE@rowcount bigint

SELECT @cpu_time_start = cpu_time, @elapsed_time_start = total_elapsed_time FROMsys.dm_exec_requests WHERE session_id=@@SPID

IFOBJECT_ID('tempdb.dbo.#tmp_requests') ISNOTNULLDROPTABLE#tmp_requests

IFOBJECT_ID('tempdb.dbo.#tmp_requests2' ) IS NOT NULL DROPTABLE#tmp_requests2

IF@runtimeISNULL

BEGIN

SET@runtime=GETDATE()

SET@msg='Start time: '+CONVERT(varchar(30),@runtime, 126)

RAISERROR(@msg,0, 1)WITH NOWAIT

END

SET@qrydurationwarnthreshold=500

--SERVERPROPERTY('ProductVersion') returns e.g. "9.00.2198.00" -->9

SET @servermajorversion = REPLACE (LEFT (CONVERT (varchar, SERVERPROPERTY('ProductVersion' )),2), ' . ', ' ')

RAISERROR(@msg,0, 1)WITH NOWAIT

SET@querystarttime=GETDATE()

SELECTsess.session_id, req.request_id, tasks.exec_context_id AS ecid, tasks.task_address,req.blocking_session_id, LEFT(tasks.task_state, 15)AS task_state,tasks.scheduler_id, LEFT (ISNULL (req.wait_type, ' '), 50) AS wait_type, LEFT (ISNULL(req.wait_resource, ' '),40)ASwait_resource,

LEFT(req. last_wait_type,50)AS last_wait_type,

/* sysprocesses is the only way to get open_tran count for sessions w/o an active request(SQLBU D#487091)*/

CAS E

WHEN req.open_transaction_count IS NOT NULLTHEN req.open_transaction_count

ELSE (SELECT open_tran FROM master.dbo.sysprocesses sysproc WHERE sess.session_id=sysproc.spid)

END ASopen_trans,

LEFT(CASE COALESCE(req.transaction_isolation_level, sess.transaction_isolation_level )

WHEN 0THEN'0-ReadCommitted'

WHEN 1THEN'1-Read Uncommitted(NOLOCK)'

WHEN 2THEN'2-ReadCommitted'

WHEN3THEN'3-RepeatableRead'

WHEN4THEN'4-Serial izable'

WHEN 5THEN'5-Snapshot'

ELSE CONVERT(varchar(30), req.transaction_isolation_level )+'-UNKNOWN'

END,30)AStransaction_isolation_level,sess. is_user_process, req.cpu_time AS request_cpu_time,

/*CASE stmts necessarytoworkaround SQLBUD#438189(fixed in SP2)*/

CASE WHEN (@servermajorversion > 9) OR (@servermajorversion = 9 ANDSERVERPROPERTY('ProductLevel ')>='SP2'COLLATE Latin1_General_BIN)

THEN req. logical_reads ELSE req. logical_reads - sess. logical_reads END ASrequest_logical_reads,

CASE WHEN (@servermajorversion > 9) OR (@servermajorversion = 9 ANDSERVERPROPERTY('ProductLevel ')>='SP2'COLLATE Latin1_General_BIN)

THEN req.reads ELSE req.reads-sess.reads END AS request_reads,

CASE WHEN (@servermajorversion > 9) OR (@servermajorversion = 9 ANDSERVERPROPERTY('ProductLevel ')>='SP2'COLLATE Latin1_General_BIN)

THEN req.writes ELSE req.writes-sess.writes END AS request_writes,sess.memory_usage, sess.cpu_time AS session_cpu_time, sess.reads AS session_reads,sess.writesAS session_writes, sess. logical_readsASsession_logical_reads,sess.total_scheduled_time, sess.total_elapsed_time, sess. last_request_start_time,sess. last_request_end_time, sess.row_count AS session_row_count,sess.prev_error, req.open_resultset_count AS open_resultsets, req.total_elapsed_time ASrequest_total_elapsed_time,

CONVERT (decimal(5,2), req.percent_complete) AS percent_complete,req.estimated_completion_timeASest_completion_time, req.transaction_id,req.start_time AS request_start_time, LEFT(req.status, 15)AS request_status, req.command,req.plan_handle, req.sql_handle, req.statement_start_offset,req.statement_end_offset, req.database_id, req. [user_id], req.executing_managed_code,tasks.pending_io_count, sess. login_time,

LEFT(sess. [host_name], 20)AS[host_name], LEFT(ISNULL (sess.program_name, ' '), 50)ASprogram_name, ISNULL(sess.host_process_id,0)AS host_process_id,

ISNULL (sess.cl ient_version,0)AS cl ient_version, LEFT(ISNULL (sess.cl ient_interface_name,' '),30)AS cl ient_interface_name,

LEFT(ISNULL(sess. login_name, ' '),30)ASlogin_name, LEFT(ISNULL(sess.nt_domain, ' ' ),30)AS nt_domain, LEFT(ISNULL(sess.nt_user_name, ' '),20)AS nt_user_name,

ISNULL (conn.net_packet_size, 0) AS net_packet_size, LEFT (ISNULL(conn.cl ient_net_address, ' '),20)AScl ient_net_address, conn.most_recent_sql_handle,

LEFT(sess.status, 15)AS session_status,

/* sys.dm_os_workers and sys.dm_os_threads removed due to perf impact, no predicatepushdown(SQLBU#488971) */

-- workers. is_preemptive,

-- workers. is_sick,

-- workers.exception_num AS last_worker_exception,

-- convert (varchar (20), master.dbo.fn_varbintohexstr (workers.exception_address)) ASlast_exception_address

-- threads.os_thread_id

sess.group_id

INTO#tmp_requests

FROM sys.dm_exec_sessions sess

/* Join hints are required here to work around bad QO join order/type decisions (ultimatelyby-design, caused bythe lackof accurate DMVcard estimates)*/

LEFTOUTER MERGEJOIN sys.dm_exec_requests req ON sess.session_id=req.session_id

LEFT OUTER MERGE JOIN sys.dm_os_tasks tasks ON tasks.session_id = sess.session_id ANDtasks.request_id=req.request_id

/* The fol lowing two DMVs removed due to perf impact, no predicate pushdown (SQLBU#488971)*/

-- LEFT OUTER MERGE JOIN sys.dm_os_workers workers ON tasks.worker_address =workers.worker_address

-- LEFT OUTER MERGE JOIN sys.dm_os_threads threads ON workers.thread_address =threads.thread_address

LEFTOUTER MERGEJOIN sys.dm_exec_connectionsconn on conn.session_id=sess.session_id

WHERE

/*Get execution stateforal l active queries. . . */

(req.session_id IS NOT NULL AND (sess. is_user_process = 1 OR req.status COLLATELatin1_General_BIN NOTIN('background', 'sleeping')) )

/* . . . and also any head blockers, even though they may not be running a query at themoment. */

OR (sess.session_id IN (SELECT DISTINCT blocking_session_id FROM sys.dm_exec_requestsWHERE blocking_session_id!=0))

/* redundantduetothe use of join hints,butadded hereto suppresswarning message*/

OPTION(FORCEORDER)

SET@rowcount=@@ROWCOUNT

SET@queryduration=DATEDIFF(ms,@querystarttime,GETDATE())

IF@queryduration>@qrydurationwarnthreshold

PRINT 'DebugPrint: perfstats qry1 - ' + CONVERT (varchar, @queryduration) + 'ms,rowcount='+CONVERT(varchar,@rowcount)+CHAR(13)+CHAR(10)

IF NOT EXISTS (SELECT* FROM#tmp_requests WHERE session_id <>@@SPID AND ISNULL(host_name, ' ') !=@appname)BEGIN

PRINT'Noactivequeries'

END

ELSEBEGIN

--Thereareactivequeries (otherthan this one).

--This query could be col lapsed into the query above. It is broken out here to avoid an

excessively

-- large memorygrantdue topoor cardinal ityestimates(see previousbugs --ultimatecauseisthe

-- lack of good statsfor many DMVs).

SET@querystarttime=GETDATE()

SELECT

IDENTITY(int,1,1)AS tmprownum,r.session_id, r.request_id, r.ecid, r.blocking_session_id, ISNULL(waits.blocking_exec_context_id,0)AS blocking_ecid,r.task_state, r.wait_type, ISNULL (waits.wait_duration_ms, 0) AS wait_duration_ms,r.wait_resource,

LEFT (ISNULL (waits.resource_description, ' '), 140) AS resource_description,r. last_wait_type, r.open_trans,r.transaction_isolation_level, r. is_user_process, r.request_cpu_time,r.request_logical_reads, r.request_reads,r.request_writes, r.memory_usage, r.session_cpu_time, r.session_reads, r.session_writes,r.session_logical_reads,r.total_scheduled_time, r.total_elapsed_time, r. last_request_start_time,r. last_request_end_time, r.session_row_count,r.prev_error, r.open_resultsets, r.request_total_elapsed_time, r.percent_complete,r.est_completion_time,

-- r.tran_name, r.transaction_begin_time, r.tran_type, r.tran_state,

LEFT(COALESCE (reqtrans.name, sesstrans.name, ' '),24)AStran_name,

COALESCE (reqtrans.transaction_begin_time, sesstrans.transaction_begin_time) AStransaction_begin_time,

LEFT(CASE COALESCE(reqtrans.transaction_type, sesstrans.transaction_type)

WHEN 1THEN'1-Read/write'

WHEN2THEN'2-Readonly'

WHEN 3 THEN'3-System'

WHEN 4THEN'4-Distributed'

ELSE CONVERT (varchar(30), COALESCE (reqtrans.transaction_type,sesstrans.transaction_type))+'-UNKNOWN'

END, 15)AS tran_type,

LEFT(CASE COALESCE(reqtrans.transaction_state, sesstrans.transaction_state)

WHEN0THEN'0-Initial izing'

WHEN 1THEN'1-Initial ized'

WHEN 2 THEN'2-Active'

WHEN3THEN'3-Ended'

WHEN4THEN'4-Preparing'

WHEN 5THEN'5-Prepared'

WHEN 6THEN'6-Committed'

WHEN7THEN'7-Rol l ingback'

WHEN8THEN'8-Rol led back'

ELSE CONVERT (varchar(30), COALESCE (reqtrans.transaction_state,

sesstrans.transaction_state))+'-UNKNOWN'

END, 15)AS tran_state,r.request_start_time, r.request_status, r.command, r.plan_handle, r.sql_handle,r.state ment_start_offset,r.statement_end_offset, r.database_id, r. [user_id], r.executing_managed_code,r.pending_io_count, r. login_time,r. [host_name], r.program_name, r.host_process_id, r.cl ient_version,r.cl ient_interface_name, r. login_name, r.nt_domain,r.nt_user_name, r.net_packet_size, r.cl ient_net_address, r.most_recent_sql_handle,r.session_status, r.scheduler_id,

-- r. is_preemptive, r. is_sick, r. last_worker_exception, r. last_exception_address,

-- r.os_thread_idr.group_id

INTO#tmp_requests2

FROM#tmp_requests r

/* Join hintsare required here toworkaround bad QOjoin order/type decisions (ultimatelyby-design, caused bythe lackof accurate DMVcard estimates)*/

/*Perf: no predicate pushdown on sys.dm_tran_active_transactions(SQLBU#489000)*/

LEFT OUTER MERGE JOIN sys.dm_tran_active_transactions reqtrans ON r.transaction_id =reqtrans.transaction_id

/*No predicate pushdown on sys.dm_tran_session_transactions(SQLBU#489000)*/

LEFT OUTER MERGE JOIN sys.dm_tran_session_transactions sessions_transactions onsessions_transactions.session_id=r.session_id

/*No predicate pushdown on sys.dm_tran_active_transactions (SQLBU#489000)*/

LEFT OUTER MERGE JOIN sys.dm_tran_active_transactions sesstrans ONsesstrans.transaction_id=sessions_transactions.transaction_id

/*Suboptimal perf: seeSQLBUD#449144.Butwe haveto handlethis in qry3 instead of heretoavoidSQLBUD#489109. */

LEFT OUTER MERGE JOIN sys.dm_os_waiting_tasks waits ON waits.waiting_task_address =r.task_address

ORDER BY r.session_id,blocking_ecid

/* redundantduetothe use of join hints,butadded hereto suppresswarning message*/

OPTION(FORCEORDER)

SET@rowcount=@@ROWCOUNT

SET@queryduration=DATEDIFF(ms,@querystarttime,GETDATE())

IF@queryduration>@qrydurationwarnthreshold

PRINT 'DebugPrint: perfstats qry2 - ' + CONVERT (varchar,@queryduration) + 'ms,rowcount='+CONVERT(varchar,@rowcount)+CHAR(13)+CHAR(10)

/*This index typical ly takes<10ms to create, and drops the head blocker summary querycost from~250ms CPU down to~20ms. */

CREATE NONCLUSTERED INDEX idx1 ON#tmp_requests2 (blocking_session_id, session_id,wait_type,wait_duration_ms)

RAISERROR('-- requests--',0, 1)WITH NOWAIT

/*Output Resultset#1: summary of al l active requests(and head blockers)*/

/* Dynamic (but expl icitly parameterized) SQL used here to al low for (optional)direct-to-database data col lection

**without unnecessarycode dupl ication. */

SET@sql='

SELECTTOP 10000CONVERT(varchar(30),@runtime, 126)ASruntime,session_id, request_id,ecid,blocking_session_id,blocking_ecid, task_state,wait_type,wait_duration_ms,wait_resource, resource_description, last_wait_type,open_trans, transaction_isolation_level, is_user_process,request_cpu_time, request_logical_reads, request_reads, request_writes,memory_usage,session_cpu_time, session_reads, session_writes, session_logical_reads,total_scheduled_time,total_elapsed_time, CONVERT (varchar, last_request_start_time, 126) ASla st_req uest_sta rt_t i me,

CONVERT (varchar, last_request_end_time, 126) AS last_request_end_time,session_row_count,prev_error,open_resultsets, request_total_elapsed_time,percent_complete,est_completion_time, tran_name,

CONVERT(varchar, transaction_begin_time, 126)AStransaction_begin_time, tran_type,tran_state, CONVERT (varchar, request_start_time, 126) AS request_start_time,request_status,comma nd, statement_sta rt_offset, statement_end_offset,data base_id, [user_i d],executing_managed_code, pending_io_count, CONVERT (varchar, login_time, 126) ASlogin_time,

[host_name], program_name, host_process_id, cl ient_version, cl ient_interface_name,login_name,nt_domain, nt_user_name, net_packet_size, cl ient_net_address, session_status,scheduler_id,

-- is_preemptive, is_sick, last_worker_exception, last_exception_address

--os_thread_idgroup_id

FROM#tmp_requests2 r

WHERE ISNULL([host_name], ' ' ' ' ) !=@appnameAND r.session_id!=@@SPID

/*One EC can have multiplewaits in sys.dm_os_waiting_tasks (e.g.parentthreadwaitingonmultiplechi ldren, forexample

**for paral lel create index;or memgrantwaitsfor RES_SEM_FOR_QRY_COMPILE). Thiswi l l result inthe same EC being l isted

** multiple times in the request table, which is counterintuitive for most people.Instead of showing al l wait relationships,

** for each EC we wi l l report the wait relationship that has the longest wait time. (Iftherearemultiplerelationshipswith

** the same wait time, blocker spid/ecid is used to choose one of them.) If it were notforSQLBUD#489109,we would dothis

**exclusion in the previousquerytoavoidstoringdata thatwi l l ultimatelybe fi lteredout.

*/

AND NOT EXISTS

(SELECT* FROM#tmp_requests2 r2

WHERE r.session_id = r2.session_id AND r.request_id = r2.request_id AND r.ecid =r2.ecid AND r.wait_type=r2.wait_type

AND (r2.wait_duration_ms > r.wait_duration_ms OR (r2.wait_duration_ms =r.wait_duration_msAND r2.tmprownum>r.tmprownum)) )

'

IF'%runmode%'='REALTIME'

SET@sql='

INSERT INTO tbl_REQUESTS (runtime, session_id, request_id, ecid, blocking_session_id,blocking_ecid,task_state, wait_type, wait_duration_ms, wait_resource, resource_description,last_wait_type,open_trans,transaction_isolation_level, is_user_process, request_cpu_time, request_logical_reads,request_reads, request_writes,memory_usage,session_cpu_time, session_reads, session_writes, session_logical_reads,total_scheduled_time, total_elapsed_time, last_request_start_time,last_request_end_time, session_row_count, prev_error, open_resultsets,request_total_elapsed_time,percent_complete,estimated_completion_time,tran_name, transaction_begin_time, tran_type, tran_state, request_start_time,request_status, comma nd, statement_sta rt_offset,statement_end_offset, database_id, [user_id], executing_managed_code,pending_io_count, login_time, [host_name],program_name, host_process_id,cl ient_version, cl ient_interface_name, login_name, nt_domain, nt_user_name,net_packet_size, cl ient_net_address, session_status,most_recent_sql_handle, scheduler_id) '+@sql

SET@querystarttime=GETDATE()

EXEC sp_executesql @sql, N'@runtime datetime, @appname sysname', @runtime =@runtime,@appname=@appname

SET@rowcount=@@ROWCOUNT

SET@queryduration=DATEDIFF(ms,@querystarttime,GETDATE())

RAISERROR(' ',0, 1)WITH NOWAIT

IF@queryduration>@qrydurationwarnthreshold

PRINT 'DebugPrint: perfstats qry3 - ' + CONVERT (varchar,@queryduration) + 'ms,rowcount='+CONVERT(varchar,@rowcount)+CHAR(13)+CHAR(10)

/*Resultset#2:Head blocker summary*/

/* Intra-query blocking relationships (paral lel query waits) aren't "true" blocking problemsthatweshould reporton here. */

IF NOT EXISTS (SELECT * FROM#tmp_requests2 WHERE blocking_session_id != 0 ANDwait_type NOT IN('WAITFOR', 'EXCHANGE', 'CXPACKET')AND wait_duration_ms>0)

BEGIN

PRINT' '

PRINT'--Noblocking detected--'

PRINT' '

END

ELSEBEGIN

PRINT' '

PRINT'-----------------------'

PRINT'--BLOCKING DETECTED--'

PRINT' '

RAISERROR('--headblockersummary--',0, 1)WITH NOWAIT;

/*We need stats l ike the number of spids blocked,max waittime, etc, for each headblocker. Use a recursive CTE to

**walkthe blocking hierarchy.Again,expl icitly parameterized dynamicSQL used to al lowoptional col lection direct

**toa database. */

SET@cte='

WITH BlockingHierarchy (head_blocker_session_id, session_id, blocking_session_id,wait_type,wait_duration_ms,wait_resource, statement_sta rt_offset, statement_end_offset,pla n_ha ndle, sql_ha n dle,most_recent_sql_handle, [Level] )

AS(

SELECT head.session_id AS head_blocker_session_id, head.session_id AS session_id,head.blocking_session_id,head.wait_type, head.wait_duration_ms, head.wait_resource,hea d.statement_sta rt_offset, hea d.statement_e nd_offset,head.plan_handle, head.sql_handle, head.most_recent_sql_handle,0AS[Level]

FROM#tmp_requests2 head

WHERE (head.blocking_session_id IS NULL OR head.blocking_session_id=0)

AND head.session_id IN (SELECT DISTINCT blocking_session_id FROM#tmp_requests2 WHERE blocking_session_id!=0)

UNIONALL

SELECT h.head_blocker_session_id, blocked.session_id, blocked.blocking_session_id,blocked.wait_type,blocked.wait_duration_ms, blocked.wait_resource, h.statement_start_offset,h.statement_end_offset,h.plan_handle, h.sql_handle, h.most_recent_sql_handle, [Level]+1

FROM#tmp_requests2 blocked

INNER JOIN BlockingHierarchy AS h ON h.session_id = blocked.blocking_session_idand h.session_id!=blocked.session_id--avoid infinite recursionfor latchtype of blocknig

WHERE h.wait_type COLLATE Latin1_General_BIN NOT IN(' 'EXCHANGE' ', ' 'CXPACKET' ')

)'

SET@sql='

SELECT CONVERT(varchar(30),@runtime, 126)AS runtime,head_blocker_session_id, COUNT(*) AS blocked_task_count, SUM (ISNULL

一键去除宝塔面板各种计算题与延时等待

现在宝塔面板真的是越来越过分了,删除文件、删除数据库、删除站点等操作都需要做计算题!我今天升级到7.7版本,发现删除数据库竟然还加了几秒的延时等待,也无法跳过!宝塔的老板该不会是小学数学老师吧,那么喜欢让我们做计算题!因此我写了个js用于去除各种计算题以及延时等待,同时还去除了软件列表页面的bt企业版广告。只需要执行以下命令即可一键完成!复制以下命令在SSH界面执行:Layout_file="/w...

妮妮云香港CTG云服务器1核 1G 3M19元/月

香港ctg云服务器香港ctg云服务器官网链接 点击进入妮妮云官网优惠活动 香港CTG云服务器地区CPU内存硬盘带宽IP价格购买地址香港1核1G20G3M5个19元/月点击购买香港2核2G30G5M10个40元/月点击购买香港2核2G40G5M20个450元/月点击购买香港4核4G50G6M30个80元/月点击购买香...

Asiayun:枣庄电信Asiayun美国Cera葵湾VPSvps月付,美国CERA VPS月付26元/年

亚洲云Asiayun怎么样?亚洲云成立于2021年,隶属于上海玥悠悠云计算有限公司(Yyyisp),是一家新国人IDC商家,且正规持证IDC/ISP/CDN,商家主要提供数据中心基础服务、互联网业务解决方案,及专属服务器租用、云服务器、云虚拟主机、专属服务器托管、带宽租用等产品和服务。Asiayun提供源自大陆、香港、韩国和美国等地骨干级机房优质资源,包括BGP国际多线网络,CN2点对点直连带宽以...

mssql2008为你推荐
authorware素材Authorware制作个人简历步骤有趣的广告比较有趣的广告词有哪些bluestacksBlueStacks是什么?在PC上畅玩Android 45万款应用镜像文件是什么什么叫镜像文件,作用是什么?镜像文件是什么镜像文件是什么意思?安卓应用平台手机系统应用在哪怎么点亮qq空间图标怎么点亮QQ空间的图标小米3大概多少钱小米3现在多少钱mate8价格华为mate8市场价多少bluestackbluestacks下载的东西在哪
虚拟主机99idc 动态域名解析 泛域名 域名查询工具 提供香港vps 重庆服务器托管 diahosting sub-process 智能骨干网 福建天翼加速 hinet 台湾谷歌 便宜空间 百度云加速 防cc攻击 阿里云邮箱登陆地址 登陆qq空间 带宽测试 asp空间 架设代理服务器 更多