热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

打造高并发安全系?(SSH)应该注意的几个问题

最近验收会终于开完了,也算是稍微松了一口气,之前系统定位是分布式部署,但是到了最后上线阶段又改为集中部署,这样性能问题就成了当前比较棘手的一件事,项目上线后频繁出线内存溢出、数据库锁表问题,加上后来压力测试时出现的系统并发慢的问题,经过这N

最近验收会终于开完了,也算是稍微松了一口气,之前系统定位是分布式部署,但是到了最后上线阶段又改为集中部署,这样性能问题就成了当前比较棘手的一件事,项目上线后频繁出线内存溢出、数据库锁表问题,加上后来压力测试时出现的系统并发慢的问题,经过这N久的折磨后,现在终于有了一些成果,下面简单记录一下,记录下来供大家参考交流,其中难免瑕疵之处欢迎大家指正 

1、  应该尽量减小service事务代码块的大小,在事务中对记录进行修改时,会对相应表加锁,如:A事务对table1 和table2表的记录进行修改,那么B事务再对table1 和table2表的记录进行修改时会等A事务commit以后才能获得table1和table2的锁,这样事务太长并发量大的时候系统就会变慢

2、  事务里对表的更新操作应该按一定顺序,如果顺序不同则可能会出现数据库表死锁的情况,如:A事务先对两张表的修改顺序是table1、table2,而B事务对两张表的修改顺序是table2、table1,这样并发执行的时候就会出现死锁情况

3、 程序里指定事务隔离级别,默认是数据库的隔离级别,mysql是行级锁,sql server是表级锁,如果是sql server则需要开启快照模式

  id="txAdvice">
  tributes>
   
   
   
   
   
   
   timeout="60000"/>
  
 
   

4、  开启hibernate二级缓存(建议使用EHcache),这样大大提高效率

"hibernate.cache.use_query_cache">

           ${hibernate.cache.use_query_cache}

       

        "hibernate.cache.provider_class">

               ${hibernate.cache.provider_class}

         

hibernate.cache.use_query_cache=true

hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider

dao中查询前使用getHibernateTemplate().setCacheQueries(true);

5、  如果有系统出现内存溢出没有规律的现象,则应该考虑常用模块是否有程序中有遍历集合循环查询数据库的问题,排除这种情况后就只能在配置上下手了,以jboss4.2.3为例说明

set JAVA_OPTS=-server ?Xms512m -Xmx512m-XX:PermSize=512m -XX:MaxPermSize=512m  -XX:+UseParallelGC-XX:+UseParallelOldGC

详细参数说明大家可以在网上自己查找,这里需要指出的是JVM有一个最大内存限制,网上说这个限制一般是 2GB-3GB(一般来说Windows系统下为1.5G-2G,Linux系统下为2G-3G),有说64位操作系统没这个限制的,但本人在64位的widows2008上验证,同样有这个限制


程序问题往往是造成内存溢出的主要原因,大家一定要注意自己代码的质量

6、  使用集群,web应用服务器集群(可以使用apahce+modjk+tomcat/jboss或者linux下使用LVS+Keepalived),数据库如果使用sql server可以使用2008版本自带的集群,如果是mysql建议使用双机热备来增强安全性

最终架构


推荐阅读
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • Centos下安装memcached+memcached教程
    本文介绍了在Centos下安装memcached和使用memcached的教程,详细解释了memcached的工作原理,包括缓存数据和对象、减少数据库读取次数、提高网站速度等。同时,还对memcached的快速和高效率进行了解释,与传统的文件型数据库相比,memcached作为一个内存型数据库,具有更高的读取速度。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 分享css中提升优先级属性!important的用法总结
    web前端|css教程css!importantweb前端-css教程本文分享css中提升优先级属性!important的用法总结微信门店展示源码,vscode如何管理站点,ubu ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了关于apache、phpmyadmin、mysql、php、emacs、path等知识点,以及如何搭建php环境。文章提供了详细的安装步骤和所需软件列表,希望能帮助读者解决与LAMP相关的技术问题。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • PHP函数实现分页含文本分页和数字分页【PHP】
    后端开发|php教程PHP,分页后端开发-php教程最近,在项目中要用到分页。分页功能是经常使用的一个功能,所以,对其以函数形式进行了封装。影视网源码带充值系统,vscode配置根 ... [详细]
author-avatar
mobiledu2502883787
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有