五、数据库连接池
? 未使用连接池,应用程序在建立数据库连接上消耗的时间较长,影响性能效率。
? 连接池配置参数不当(通过测试确定合适的值)
六、并发事务处理和死锁问题
? 程序对事务并发处理上的错误。
? 资源争用引起锁阻塞和死锁。
? SYBASE的锁模式为行锁,可以减小死锁发生的可能性。
死锁或者锁阻塞,如何检查锁阻塞的大致步骤
比如mysql 为例子
1.Show processlist,查看有locked的进程
2.查看阻塞进程执行的sql
3.关掉程序,或者杀死进程,解掉死锁,不建议杀死进程,可能导致不完整的数据。
4.查看sql问题,单独确认问题
5.优化sql或者查程序问题
还以一个实际问题中,sybase锁阻塞的例子
环境维护发现锁阻塞,发现很慢,检查到有问题的sql
1. sp_lock 看到死锁
2.查看阻塞进程信息
select * from master..sysprocesses where ipaddr =‘XXXX‘
3.造成锁阻塞的进程是spid为 1 和 2 的
使用dbcc traceon(3604)
dbcc sqltext(1)
dbcc sqltext(2)
查看到进程执行的sql
select * from View(视图) where ID = null (未列出原sql,仅举个例子)
4.关掉程序,杀死进程,解掉死锁
单独使用sql adv连接数据库,执行该sql,很慢。
查看创建View的语法,sybase可以使用sp_helptext View,可以看到建视图的大致的sql是
create view as select xxxx from A ,B where A.ID*=B.ID and A.C=10
查看sql的I/O和执行时间 set statistics time,io on,查看到sql具体的执行时间和I/O
5.简单看了一下,试着在C字段上增加了索引
再查询响应时间变小了和查询计划变了,有问题的就是这个查看视图的sql了,可能是资源争用造成了死锁。
七、页面过大,网络延迟
? 页面中图形多且大
? 使用比较大的控件等等
? 建议参数WEB前端性能优化,推荐Yslow工具
中国雅虎有相关使用Yslow的一个很好的ppt。建议参考
八、内存溢出、应用终止、服务器宕机等严重问题
? 批量对数据进行操作,会返回大量数据给应用服务器占用了较多的应用服务器的内存,可能会导致应用服务器内存溢出。
? 消耗服务器某种资源过多的操作可能会使服务器出现宕机和应用终止的情况。
? 检查应用程序日志和操作系统的日志或者core文件
九、参数调整和日志级别设置
服务器的参数调整不合理。完善性能环境检查的各种checklist。
生产环境中日志级别应当设置的较高,不打印出sql语句和调试信息,额外的I/O会降低性能效率