0

我有一个 ASP Web 服务 (.asmx),它只是获取一个带有查询字符串的 SOAP 请求,在数据库上执行它,然后返回数据或受影响的行。我想在数据库的日志表中记录服务器回复所需的响应时间,但我不知道如何获取请求和回复时间,所以我可以计算它。我现在做的方式是WebMethod,我获取当前时间,然后执行查询,然后获取时间跨度并将其保存在数据库中。但是,这并没有测量服务器在返回对象并以 XML 进行序列化时所花费的序列化时间,因此它小于实际响应时间。这是我的代码:

[WebMethod]
public Table Select(string environment, string username, string password, string query)
{
    DateTime start = DateTime.Now;

    Table table = Methods.Select(environment, username, password, query);

    string constring = ConfigurationManager.ConnectionStrings[environment].ConnectionString;
    OracleConnection con = new OracleConnection(String.Format(ConfigurationManager.ConnectionStrings[environment].ConnectionString, username, password));
    con.Open();
    TimeSpan time = DateTime.Now - start;
    OracleCommand cmd = new OracleCommand("INSERT INTO WS_REQUESTS VALUES (TIMESTAMP'" + start.ToString("yyyy-MM-dd HH:mm:ss.ffffff") + "', '" + username + "', '" + query + "', " + time.TotalMilliseconds + ", " + errorflag + ", '" + message + "')", con);
    int rows = cmd.ExecuteNonQuery();
    con.Close();
    return table;
}

表是我为数据创建的 DTO,方法是我拥有查询功能的类。谁能告诉我如何尽可能准确地测量响应时间?最好的办法是尽可能简单,在我的服务中包含代码,最多可以嵌入我的服务中,这样它是独立的,而不是我需要在我的服务器上安装的其他性能测量工具。谢谢。

4

0 回答 0