Foxtable(狐表)用户栏目专家坐堂 → 服务器卡


  共有4009人关注过本帖树形打印复制链接

主题:服务器卡

帅哥哟,离线,有人找我吗?
刘林
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1953 积分:15015 威望:0 精华:0 注册:2016/4/28 9:58:00
服务器卡  发帖心情 Post By:2020/2/8 10:03:00 [只看该作者]

请问第师,我查了一下都用的异步函数,并发数也不多,为什么出现服务器卡死,请问该怎么办,主要查哪些地方可以缓解,优化从哪些地方来做

另外写在httprequse中的case是不是同步提交?

2020-02-08 09:46:04.2297
Exception has been thrown by the target of an invocation.
   at System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeType typeOwner)
   at System.RuntimeMethodHandle.InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeType typeOwner)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at Foxtable.UserFunctions.Execute(String Name, Object[] Args)
Object reference not set to an instance of an object.
   at UserCode.Aag4xxjwvOZhw9TAh(Object[] Args)
这个错误志是什么造成的
[此贴子已经被作者于2020/2/8 10:31:28编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110790 积分:563882 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/2/8 11:04:00 [只看该作者]

服务器卡死指什么,电脑死机?数据库慢?程序慢?

服务器带宽有多少?cpu、内存配置怎么样?并发数有多少:10?100?1000?.....?

1、对于数据库
1)、表加上合适的索引
2)、表结构有没有可以优化的地方
3)、sql尽量使用参数化的方式执行
2、对于web服务端
1)不要混用多种前端ui框架
2)不要使用InsertHTML插入完整的网页头部格式,应该改为stringbuilder
4)利用日志等逐个网页进行分析,看看不同环境(不同手机,不同网络的电脑)、不同并发数下访问的这个网页的速度怎么样?觉得不满意的适当调整代码进行优化。
3、对于客户端
1)、尽量减少大批量数据的加载
2)、利用存储过程、视图、参数化执行等提高数据库执行的速度和效率
4、对于服务器:增加带宽,cpu、内存

以我的能力也就能提出这些建议。

从我了解到的信息,您开发的系统已经不能算小了。程序规模与质量和开发人员的能力应该是同步增长的。随着程序规模(功能模块、客户端数、数据量等等)不断增长,就会出现各种的不稳定,不断的优化和重构是必然的。如果前期开发团队的能力比较弱,重构甚至可能会推翻前面的所有设计,然后重新开发。当然是否能够重构也要看后期开发团队的能力,如果能力跟不上,别说重构了,连优化可能都没有办法,也就只能原地踏步,天天忙着救火了。

 回到顶部
帅哥,在线噢!
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110790 积分:563882 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/2/8 11:06:00 [只看该作者]

除了调用异步函数外,其它代码肯定都同步的。1楼日志的错误提示是使用了空对象,类似find之后的dr没有判断是否为空值等错误

 回到顶部
帅哥哟,离线,有人找我吗?
刘林
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1953 积分:15015 威望:0 精华:0 注册:2016/4/28 9:58:00
  发帖心情 Post By:2020/2/8 11:53:00 [只看该作者]

好,谢谢,我一项一项的再改下看,另外我估计有不有用户连续点某个网页连续提交造成呢?如何防止用户连续提交造成
[此贴子已经被作者于2020/2/8 11:52:48编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
刘林
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1953 积分:15015 威望:0 精华:0 注册:2016/4/28 9:58:00
  发帖心情 Post By:2020/2/8 12:31:00 [只看该作者]

语句已终止。
将截断字符串或二进制数据。
   at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
   at System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
   at System.Data.Common.DbDataAdapter.UpdateRowExecute(RowUpdatedEventArgs rowUpdatedEvent, IDbCommand dataCommand, StatementType cmdIndex)
   at System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping)

2020-02-08 12:16:30.7151
语句已终止。
将截断字符串或二进制数据。
   at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
   at System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
   at System.Data.Common.DbDataAdapter.UpdateRowExecute(RowUpdatedEventArgs rowUpdatedEvent, IDbCommand dataCommand, StatementType cmdIndex)
   at System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping)

2020-02-08 12:16:30.7395
语句已终止。
将截断字符串或二进制数据。
   at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
   at System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
   at System.Data.Common.DbDataAdapter.UpdateRowExecute(RowUpdatedEventArgs rowUpdatedEvent, IDbCommand dataCommand, StatementType cmdIndex)
   at System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping)

2020-02-08 12:16:30.7727
语句已终止。
将截断字符串或二进制数据。
   at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
   at System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
   at System.Data.Common.DbDataAdapter.UpdateRowExecute(RowUpdatedEventArgs rowUpdatedEvent, IDbCommand dataCommand, StatementType cmdIndex)
   at System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping)

2020-02-08 12:16:30.8138
语句已终止。
将截断字符串或二进制数据。
   at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
   at System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
   at System.Data.Common.DbDataAdapter.UpdateRowExecute(RowUpdatedEventArgs rowUpdatedEvent, IDbCommand dataCommand, StatementType cmdIndex)
   at System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping)

2020-02-08 12:16:36.0933
语句已终止。
将截断字符串或二进制数据。
   at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
   at System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
   at System.Data.Common.DbDataAdapter.UpdateRowExecute(RowUpdatedEventArgs rowUpdatedEvent, IDbCommand dataCommand, StatementType cmdIndex)
   at System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping)


请问老师如何看出是哪个表现哪个字段有问题呢

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110790 积分:563882 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/2/8 13:18:00 [只看该作者]

这种错误是列长度太短。但是日志是看不出是哪个字段的。测试看是什么功能引起的,检查相关代码

 回到顶部
帅哥哟,离线,有人找我吗?
刘林
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1953 积分:15015 威望:0 精华:0 注册:2016/4/28 9:58:00
  发帖心情 Post By:2020/2/8 14:35:00 [只看该作者]

老师,我直接看到服务,当出现上面问题错误窗口,关闭这个窗口就关不到了,整个就卡起了,这是什么原因,

 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110790 积分:563882 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/2/8 14:53:00 [只看该作者]

您是直接给table的行赋值才会有这种错误窗口提示的。建议服务端项目尽量都不要操作主表,而是通过SQLcommand,或者sqladdnew、sqlfind之类的来控制数据的增删改,后者可以被BeforeShowErrorMessage事件处理掉。而操作主表是会有这行错误窗口弹出来的,特别是使用异步函数的情况下,更不应该直接操作主表。

 回到顶部
帅哥哟,离线,有人找我吗?
刘林
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1953 积分:15015 威望:0 精华:0 注册:2016/4/28 9:58:00
  发帖心情 Post By:2020/2/8 16:13:00 [只看该作者]

老师是不是异步函数中不能用adnew只能用sqladnew

 回到顶部
帅哥,在线噢!
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110790 积分:563882 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/2/8 16:15:00 [只看该作者]

不能使用主表的adnew,如果是SQLcommand返回的临时表就可以。


 回到顶部
总数 21 1 2 3 下一页