知识库

标准化实施手册及常见错误


各系统基础参数优化方案V1.3

<h1>文档编写目的</h1> <p>  本文档适用于mysql/Oracle + tomcat 架构部署在windows上的系统,通过对系统的参数检查来提前规避一些因为各系统参数导致的系统崩溃情况的出现,加强日常巡检工作落实,为系统可能出现的问题做出预警和处理,提高系统的稳定性和安全性</p> <h2>数据库配置</h2> <h3>Window+MySQL</h3> <h4>数据库安装位置检查及处理方法(windows操作系统必查)</h4> <p><strong>检查:</strong>检查mysql的数据库的安装位置,确保mysql安装位置不在系统盘路径下,否则会造成mysql连接无法释放,内存无限增加。(mysql5.6及以前版本尤其容易出现</p> <h4>数据库最大连接数检查及处理方法</h4> <p><strong>检查1</strong>查看历史最大连接数<code>show global status like 'Max_used_connections';</code> <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/040a4c5a8ac7614700e5362e79993727" alt="" /> <strong>检查2</strong>查看最大连接数<code>show variables like &amp;quot;%max_connections%&amp;quot;;</code> <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/cb82edef270b0b020e967c5cddadc016" alt="" /> <strong>处理方法:</strong>通过修改配置文件来修改MySQL最大连接数(max_connections)。进入MySQL安装目录,打开MySQL配置文件 my.ini 或 my.cnf,在[mysqld]段中添加或修改max_connections值,修改为max_connections=2000,重启MySQL服务即可。   对于mysql服务器最大连接数值的设置范围比较理想的是:历史最大连接数(max_used_connections)占服务器上限连接数值(max_connections)的比例值在10%以上,50%以下,如果在10%以下,说明mysql服务器最大连接上限值设置过高。 <code>推荐比例值在20%,即应用使用平稳期的当前连接数如果是200,推荐最大连接数配置为1000.</code> <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/cff9f5283acc4af69817a7d596e44213" alt="" /></p> <h4>数据库sql_mode设置处理办法</h4> <p>  Mysql5.7及以上版本不支持设置日期的默认值全为0,解决timestamp默认值不正确问题,检查数据库配置文件my.ini文件是否存在sql_mode设置 <strong>处理办法:</strong> <del>临时生效(不需要重启数据库)</del>:<code>set GLOBAL sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION</code> <del>永久生效(重启数据库生效)</del>:在my.ini文件的[mysqld]下设置参数<code>sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION</code> <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/4e60cfdd8066ed145a34539c4c61e659" alt="" /></p> <h4>大小写不敏感设置</h4> <p>  为避免数据库表名大小写不一致,导致无法识别表数据库 <strong>处理办法</strong>:在my.ini文件的[mysqld]下设置<code>lower_case_table_names=1</code> <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/029823df88bfdb16b8d217747922c705" alt="" /></p> <h4>据库buffer大小检查及处理方法</h4> <p><strong>检查:</strong><code>show global variables like 'innodb_buffer_pool_%size' ;</code>,单位B <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/98549fe439446c7029316c76e2baf128" alt="" /> <strong>处理方法:</strong>通过修改配置文件来修改MySQL最大连接数<code>innodb_buffer_pool_size</code>进入MySQL安装目录,打开MySQL配置文件 my.ini 或 my.cnf,在[mysqld]段中添加或修改innodb_buffer_pool_size值,修改为innodb_buffer_pool_size = 1073741824,重启MySQL服务即可。 <code>innodb_buffer_pool_size改成剩余总内存的40%,此处的单位为B需要手动换算,1GB=1073741824B</code></p> <h4>数据库编码格式</h4> <pre><code class="language-shell">vim /etc/my.cnf, #在里面加入,已经有[XXX]的,在里面直接加入即可 [mysqld] character-set-server=utf8 [client] default-character-set=utf8 [mysql] default-character-set=utf8 保存退出后重启数据库生效</code></pre> <p><strong>查看编码</strong>:<code>执行show variables like '%char%';</code> <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/a207be8c3476b27e8007fcf549a062cc" alt="" /></p> <h3>Window+Oracle</h3> <h4>数据库安装位置检查(windows操作系统必查)</h4> <p><strong>检查:</strong>检查Oracle的数据库的安装位置,确保Oracle安装位置不在系统盘路径下,否则会造成Oracle其他权限引起的各种问题,内存无限增加。 <strong>处理方法:</strong>在做好系统数据库备份的情况下,进行数据库的重新安装到数据盘</p> <h4>数据库最大连接数检查</h4> <p><strong>检查:</strong>查看当前连接数:<code>select count(*) from v$process</code> <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/008215b9c625b5dd2c5bcbc92c468a69" alt="" /> 查看数据库允许的最大连接数:<code>select value from v$parameter where name = 'processes'</code> <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/bcea32edd111ff6d97ed2c0dd4b2c1cd" alt="" /> <strong>处理方法:</strong>修改最大连接数:<code>alter system set processes = 1000 scope = spfile</code>,重启数据库后生效   服务务器响应的最大连接数值占服务器上限连接数值的比例值在10%以上,50%以下,在保留一定弹性空间的情况下,不至于性能浪费</p> <h4>数据库buffer大小检查(修改参数之前先备份spfile文件)</h4> <p>  在数据库在一些情况下,你可能需要对oracle数据库进行优化,如修改spfile 中的参数配置(如:扩展sga内存区)等,但是往往不是一次就一步到位的, 尤其是一不小心给的sga_max_size、shared_pool_size等的值不合理时(如超出整个物理内存,给值的时候多写一个零),虽然提示已经更改,但是一重启数据库时,对不起,数据无法open,则需在修改之前提前备份。 <strong>备份spfile步骤:</strong></p> <pre><code class="language-shell">1.sqlplus / as sysdba 2.create pfile from spfile ; 3.通过spfile创建pfile文件(此时会在D:\app\rt440-ppoo\product\11.2.0\dbhome_1\database目录下生成pfile:initorcl.ora) 4.若修改参数以后数据库启动失败,则恢复之前配置,用之前备份的pfile文件启动数据库 startup pfile=’D:\app\rt440-ppoo\product\11.2.0\dbhome_1\database\initorcl.ora’ 5.关闭例程:shutdown immediate; 6.启动数据库:startup; 7.show parameter spfile;</code></pre> <p><strong>检查:</strong>查看buffer大小 查看内存配置的情况<code>show parameter target;</code> <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/d730ac7df63ae59eba3a6de1241623cd" alt="" /></p> <pre><code class="language-shell">#使用下面 Command 来调节大小: SQL&amp;gt;ALTER SYSTEM SET MEMORY_MAX_TARGET = 1024M SCOPE = SPFILE; SQL&amp;gt;ALTER SYSTEM SET MEMORY_TARGET = 1024M SCOPE = SPFILE; SQL&amp;gt;ALTER SYSTEM SET SGA_TARGET =0 SCOPE = SPFILE; SQL&amp;gt;ALTER SYSTEM SET PGA_AGGREGATE_TARGET = 0 SCOPE = SPFILE ;</code></pre> <p>  要求将MEMORY_MAX_TARGET内存设置为该服务器总可用内存的40%-60%。比如16G的数据库服务器内存,设置MEMORY_MAX_TARGET 为8G为佳;   将MEMORY_TARGET设置和MEMORY_MAX_TARGET 的值相同;   将SGA_TARGET 和 PGA_AGGREGATE_TARGET 值设置相同且为0,那么11G系统将自动管理SGA和PGA。   重启数据库后生效。</p> <h4>数据库sessions、processes使用检查</h4> <p><strong>检查:</strong>当前最大session配置<code>show parameter sessions;</code> <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/a57a085614a5daf1fc20380ebaae5b2c" alt="" /> <strong>检查:</strong>当前session连接数:<code>select count(*) from v$session;</code> <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/47e747b8b7d812863623641b2384f855" alt="" />   修改session配置:<code>alter system set processes=1500 scope=spfile</code>(重启后生效) <strong>检查:</strong>当前process配置<code>show parameter processes;</code> <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/ca3aced1525e892e1de160c3b112c183" alt="" /> <strong>检查:</strong>当前processes连接数:<code>select count(*) from v$process;</code> <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/967fc44b0e69e9248e55b8447a8ad8ed" alt="" />   修改processes配置:<code>alter system set processes=1000 scope=spfile</code>(重启后生效)</p> <h4>数据库dbf使用情况检查</h4> <p><strong>查询表空间使用情况:</strong></p> <pre><code class="language-shell">SELECT a.tablespace_name &amp;quot;表空间名称&amp;quot;, total / (1024 * 1024) &amp;quot;表空间大小(M)&amp;quot;, free / (1024 * 1024) &amp;quot;表空间剩余大小(M)&amp;quot;, (total - free) / (1024 * 1024 ) &amp;quot;表空间使用大小(M)&amp;quot;, total / (1024 * 1024 * 1024) &amp;quot;表空间大小(G)&amp;quot;, free / (1024 * 1024 * 1024) &amp;quot;表空间剩余大小(G)&amp;quot;, (total - free) / (1024 * 1024 * 1024) &amp;quot;表空间使用大小(G)&amp;quot;, round((total - free) / total, 4) * 100 &amp;quot;使用率 %&amp;quot; FROM (SELECT tablespace_name, SUM(bytes) free FROM dba_free_space GROUP BY tablespace_name) a, (SELECT tablespace_name, SUM(bytes) total FROM dba_data_files GROUP BY tablespace_name) b WHERE a.tablespace_name = b.tablespace_name</code></pre> <p><strong>修改单个表空间文件上限大小:</strong><code>alter database datafile '/home/oracle/oradata/easyweb/data6_01.dbf' AUTOEXTEND ON NEXT 200M MAXSIZE UNLIMITED;</code> <strong>一个表空间文件最大为32g,超过32g需要增加,例如:</strong><code>alter tablespace ZSK ADD datafile '/mc_data/oradata/zsk/zsk_01.dbf' SIZE 30G;</code>如果增加数据库文件一次过大,可能需要时间会比较长</p> <h4>数据库监听日志大小检查lsnrctl status</h4> <p><strong>检查:</strong>检查监听日志大小,文件位置一般在$ORACLE_BASE\diag\tnslsnr\&lt;hostname&gt;\listener\trace\listener.log,当文件到达4G就会使系统无法启动或者连接出现问题。 <strong>处理方法:</strong>将Oracle数据库服务与监听服务停止后,将原日志文件重命名后,重启所有服务即可。</p> <h3>Linux+MySQL</h3> <h4>修改服务器系统文件限制参数</h4> <p><strong>查看:</strong>一般按照标准文档进行服务器安装数据库时已经进行设置,切换到mysql用户后,执行ulimit -a,查看文件打开个数参数 <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/f7a793c7437eb59034d937db42e69961" alt="" /> <strong>处理方式:</strong></p> <pre><code class="language-shell">vim /etc/security/limits.conf #末行添加以下下内容 mysql hard nofile 65535 mysql soft nofile 65535 保存退出,重启服务器生效 临时生效:ulimit -n 65536 查看是否生效:ulimit -a</code></pre> <h4>数据库最大连接数检查及处理方法</h4> <p><strong>检查:</strong>历史最大连接数<code>show global status like 'Max_used_connections';</code> <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/c549f05e35fe67c0e0077901577c4441" alt="" /> <strong>检查:</strong>最大连接数<code>show variables like “%max_connections%”;</code> <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/8d3830389160a89460e7fcf99912d0eb" alt="" /> <strong>处理方法:</strong>通过修改配置文件来修改MySQL最大连接数<code>max_connections</code>进入MySQL安装目录,打开MySQL配置文件 my.ini 或 my.cnf,在[mysqld]段中添加或修改max_connections值,修改为<code>max_connections=1000</code>,重启MySQL服务即可。   对于mysql服务器最大连接数值的设置范围比较理想的是:历史最大连接数(max_used_connections)占服务器上限连接数值(max_connections)的比例值在10%以上,50%以下,如果在10%以下,说明mysql服务器最大连接上限值设置过高。 推荐比例值在20%,即应用使用平稳期的当前连接数如果是200,推荐最大连接数配置为1000. <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/507efacca903afe413f4c1172c6235b8" alt="" /></p> <h4>数据库sql_mode设置处理办法</h4> <p>  Mysql5.7及以上版本不支持设置日期的默认值全为0,解决timestamp默认值不正确问题,检查数据库配置文件/etc/my.cnf文件是否存在sql_mode设置 <strong>处理办法:</strong> <del>临时生效(不需要重启数据库)</del>:<code>set GLOBAL sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION;</code> <del>永久生效:</del> 在my.cnf文件的[mysqld]下设置<code>sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION</code>,重启数据库生效 <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/a81d55f7465c043350907c2989b1eecf" alt="" /></p> <h4>大小写不敏感设置</h4> <p>  为避免数据库表名大小写不一致,导致无法识别表数据库 <strong>处理办法:</strong>在my.cnf文件的[mysqld]下设置<code>lower_case_table_names=1</code> <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/468597c89924ed8c5c93176f7518fe2b" alt="" /></p> <h4>数据库buffer大小检查及处理方法</h4> <p><strong>检查:</strong><code>show global variables like 'innodb_buffer_pool_%size' ;</code>显示的单位是B, <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/07b96c1cf19efa5dbe69328c6110400b" alt="" /> <strong>处理方法:</strong>通过修改配置文件来修改MySQL最大连接数<code>innodb_buffer_pool_size</code>进入MySQL安装目录,打开MySQL配置文件 /etc/my.cnf,在[mysqld]段中添加或修改innodb_buffer_pool_size值,修改为<code>innodb_buffer_pool_size = 1073741824</code>重启MySQL服务即可。   innodb_buffer_pool_size改成剩余总内存的40%,此处的单位为B需要手动换算,1GB=1073741824B</p> <h4>数据库编码格式</h4> <pre><code class="language-shell">vim /etc/my.cnf, #在里面加入,已经有[XXX]的,在里面直接加入即可。 [mysqld] character-set-server=utf8 [client] default-character-set=utf8 [mysql] default-character-set=utf8 保存退出后重启数据库生效</code></pre> <p>查看编码:<code>show variables like '%char%';</code> <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/9e7a953283429e4f27bec56771676941" alt="" /></p> <h3>Linux+Oracle</h3> <h4>修改服务器系统文件限制参数</h4> <p><strong>查看:</strong>一般按照标准文档进行服务器安装数据库时已经进行设置,切换到oracle用户后,执行ulimit -a,查看文件打开个数参数 <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/20eb23cfbd22241cdbca1e6b8bae1101" alt="" /> <strong>处理方式:</strong></p> <pre><code class="language-shell">vim /etc/security/limits.conf # 末行添加以下内容 oracle soft nproc 20470 oracle hard nproc 16384 oracle soft nofile 10240 oracle hard nofile 65536 oracle soft stack 10240 保存退出,重启服务器生效 临时生效:ulimit -n 65536 查看是否生效:ulimit -a</code></pre> <p>1.4.2数据库最大连接数检查 <strong>检查:</strong>当前连接数:<code>select count(*) from v$process</code> <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/ddf3202fdc3b49126f6ca6c8993a48af" alt="" /> <strong>检查:</strong>数据库允许的最大连接数:<code>select value from v$parameter where name = 'processes'</code> <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/9b1cec38c31c623d63dcc414c2211d60" alt="" /> <strong>处理方法:</strong>修改最大连接数<code>alter system set processes = 1000 scope = spfile</code>重启数据库后生效   服务务器响应的最大连接数值占服务器上限连接数值的比例值在10%以上,50%以下,在保留一定弹性空间的情况下,不至于性能浪费。</p> <h4>数据库buffer大小检查</h4> <p>  在数据库在一些情况下,你可能需要对oracle数据库进行优化,如修改spfile 中的参数配置(如:扩展sga内存区)等,但是往往不是一次就一步到位的, 尤其是一不小心给的sga_max_size、shared_pool_size等的值不合理时(如超出整个物理内存,给值的时候多写一个零),虽然提示已经更改,但是一重启数据库时,对不起,数据无法open,则需在修改之前提前备份。 <strong>备份spfile步骤:</strong></p> <pre><code class="language-shell">1. sqlplus / as sysdba 2.create pfile from spfile ; 3.通过spfile创建pfile文件(此时会在D:\app\rt440-ppoo\product\11.2.0\dbhome_1\database目录下生成pfile:initorcl.ora) 4.若修改参数以后数据库启动失败,则恢复之前配置,用之前备份的pfile文件启动数据库 startup pfile='D:\app\rt440-ppoo\product\11.2.0\dbhome_1\database\initorcl.ora' 5.关闭例程:shutdown immediate; 6.启动数据库:startup; 7.show parameter spfile;</code></pre> <p><strong>检查:</strong>查看buffer大小 查看内存配置的情况<code>show parameter target;</code> <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/d93db6718a56fe900995931c7fb32272" alt="" /> 设置MEMORY参数前先查询服务器/dev/shm的空间,MEMORY_MAX_TARGET、MEMORY_TARGET不能超过空间值 df -h <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/79bd700d14f0d69a09d8b3148753c1da" alt="" /> 如果需要扩容/dev/shm空间,则可以通过以下命令重新挂载,例如出现 ORA-00845:MEMORY_TARGET not supported on this system mount -o remount,size=20G /dev/shm 注意事项: 调整/dev/shm大小的时候,须ls /dev/shm,看里面是否有oracle的文件。 如果/dev/shm中无oracle文件,可以重新mount此空间,不会对正运行实例造成任何影响; 如果/dev/shm里面有oracle文件,说明另外一个oracle实例正在使用此空间,若强行重新mount,目前暂不知道会对正运行实例造成什么影响,请谨慎操作。 </p> <pre><code class="language-shell">#使用下面 Command 来调节大小: SQL&amp;gt;ALTER SYSTEM SET MEMORY_MAX_TARGET = 1024M SCOPE = SPFILE; SQL&amp;gt;ALTER SYSTEM SET MEMORY_TARGET = 1024M SCOPE = SPFILE; SQL&amp;gt;ALTER SYSTEM SET SGA_TARGET =0 SCOPE = SPFILE; SQL&amp;gt;ALTER SYSTEM SET PGA_AGGREGATE_TARGET = 0 SCOPE = SPFILE ;</code></pre> <p>  要求将MEMORY_MAX_TARGET内存设置为该服务器总可用内存的40%-60%。比如16G的数据库服务器内存,设置MEMORY_MAX_TARGET 为8G为佳;   将MEMORY_TARGET设置和MEMORY_MAX_TARGET 的值相同;   将SGA_TARGET 和 PGA_AGGREGATE_TARGET 值设置相同且为0,那么11G系统将自动管理SGA和PGA。   重启数据库后生效。</p> <h4>数据库sessions、processes使用检查</h4> <p>查看当前最大session配置<code>show parameter sessions;</code> <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/534177332ed0ae88d311ea2ac78b447d" alt="" /> 查看当前session连接数:<code>select count(*) from v$session;</code> <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/063bb2e63f74a1153ccf96dd6eadbf7b" alt="" /> 修改session配置:<code>alter system set processes=1500 scope=spfile</code>(重启后生效) 查看当前process配置:<code>show parameter processes;</code> <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/8b18f14502b1e51fa99c61f9df7435a7" alt="" /> 查看当前processes连接数:<code>select count(*) from v$process;</code> <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/fb853054dd09641c7b73a8482ef35be1" alt="" /> 修改processes配置:<code>alter system set processes=1000 scope=spfile</code>(重启后生效)</p> <h4>数据库dbf使用情况检查</h4> <p>查询表空间使用情况:</p> <pre><code class="language-shell">SELECT Upper(F.TABLESPACE_NAME) &amp;quot;表空间名&amp;quot;, D.TOT_GROOTTE_MB &amp;quot;表空间大小(M)&amp;quot;, D.TOT_GROOTTE_MB - F.TOTAL_BYTES &amp;quot;已使用空间(M)&amp;quot;, To_char(Round(( D.TOT_GROOTTE_MB - F.TOTAL_BYTES ) / D.TOT_GROOTTE_MB * 100, 2), '990.99') || '%' &amp;quot;使用比&amp;quot;, F.TOTAL_BYTES &amp;quot;空闲空间(M)&amp;quot;, F.MAX_BYTES &amp;quot;最大块(M)&amp;quot; FROM   (SELECT TABLESPACE_NAME, Round(Sum(BYTES) / ( 1024 * 1024 ), 2) TOTAL_BYTES, Round(Max(BYTES) / ( 1024 * 1024 ), 2) MAX_BYTES FROM SYS.DBA_FREE_SPACE GROUP  BY TABLESPACE_NAME) F, (SELECT DD.TABLESPACE_NAME, Round(Sum(DD.BYTES) / ( 1024 * 1024 ), 2) TOT_GROOTTE_MB FROM SYS.DBA_DATA_FILES DD GROUP  BY DD.TABLESPACE_NAME) D WHERE  D.TABLESPACE_NAME = F.TABLESPACE_NAME ORDER  BY 1;</code></pre> <p><strong>处理方法:</strong> 修改单个表空间文件上限大小:<code>alter database datafile '/home/oracle/oradata/easyweb/data6_01.dbf' AUTOEXTEND ON NEXT 200M MAXSIZE UNLIMITED;</code> 一个表空间文件最大为32g,超过32g需要增加,例如:<code>alter tablespace ZSK ADD datafile '/mc_data/oradata/zsk/zsk_01.dbf' SIZE 30G;</code> 如果增加数据库文件一次过大,可能需要时间会比较长</p> <h4>数据库监听日志大小检查</h4> <p><strong>检查</strong>监听日志大小,文件位置一般在<code>$ORACLE_BASE\diag\tnslsnr\&amp;lt;hostname&amp;gt;\listener\trace\listener.log</code>当文件到达4G就会使系统无法启动或者连接出现问题。 在linux上寻找日志文件路径,在oracle用户下输入lsnrctl,进入监听命令行后输入<code>show log_directory</code>查看日志文件路径 <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/83e7ac19a8eb36e8e7554468a019844a" alt="" /> <strong>处理方法:</strong>将Oracle数据库服务与监听服务停止后,将原日志文件备份后,删除文件内内容,启动所有服务即可。</p> <h2>应用服务器配置</h2> <h3>Windows+tomcat</h3> <h4>Tomcat的jvm参数检查及处理方法</h4> <p><strong>查看:</strong>运行JDK的bin目路下的jvisualvm.exe,查看所有tomcat的jvm参数 <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/1fb2dbacfc921875560161ce5620daa3" alt="" /> <strong>处理方法:</strong>1.0项目推荐单个tomcat的jvm至少配置到2G的jvm,如果jvmGC频繁,可以适当调大jvm。增大jvm需要修改tomcat\bin\catalina.bat文件,在Execute The Request Command注释下面添加参数,设置jvm内存最大值 set JAVA_OPTS=&quot;-server -Xms2048m -Xmx2048m -XX:MaxNewSize=512m -XX:MaxPermSize=512m&quot; 表示初始化内存为2048MB,可以使用的最大内存为2048MB <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/fb8ad78fb81e83c701b1e2ce05f4f530" alt="" /> <strong>千万确定,你只在tomcat\bin\catalina.bat文件添加了,没在tomcat\bin\startup.bat文件中也添加了类似的参数,</strong></p> <h4>Tomcat最大线程数检查及处理方法</h4> <p><strong>查看:</strong>tomcat未做任何优化,最大连接数为150,如果是按标准化提供的Tomcat副本,无需做任何修改,如果不知tomcat来源,需重新确认该参数。查看Tomcat\conf\server.xml <strong>处理方法:</strong> 在tomcat配置文件server.xml中的&lt;Connector /&gt;配置中,和连接数相关的参数有:</p> <pre><code class="language-shell">minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为10 maxProcessors:最大连接线程数,即:并发处理的最大请求数,默认值为75 acceptCount:允许的最大连接数,应大于等于maxProcessors,默认值为100 enableLookups:是否反查域名,取值为:true或false。为了提高处理能力,应设置为false connectionTimeout:网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。</code></pre> <p>其中和最大连接数相关的参数为maxProcessors和acceptCount。如果要加大并发连接数,应同时加大这两个参数。 web server允许的最大连接数还受制于操作系统的内核参数设置</p> <pre><code class="language-shell">配置示例: &amp;lt;Connector port=&amp;quot;8080&amp;quot; maxThreads=&amp;quot;500&amp;quot; minSpareThreads=&amp;quot;25&amp;quot; minProcessors=”25” maxProcessors=”75” enableLookups=&amp;quot;false&amp;quot; redirectPort=&amp;quot;8443&amp;quot; acceptCount=&amp;quot;1000&amp;quot; debug=&amp;quot;0&amp;quot; URIEncoding=&amp;quot;UTF-8&amp;quot; connectionTimeout=&amp;quot;20000&amp;quot; disableUploadTimeout=&amp;quot;true&amp;quot; /&amp;gt;</code></pre> <h4>Windows系统TCP优化</h4> <p><strong>问题:</strong>当采用Nginx反向代理服务后,如果服务器产生较多TIME_WAIT的TCP(Transmission Control Protocol)连接,而windows服务器默认TIME_WAIT的TCP连接回收时间是4分钟,TCP默认动态端口范围为开始端口49152,结束端口65535。这样会使回收TCP过慢导致系统吞吐量下降,甚至出现502访问失败问题。 <strong>解决方案:</strong> 下载[注册表](<a href="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/7ae89fad88ab64b94a3585dbe22dd62a">http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/7ae89fad88ab64b94a3585dbe22dd62a</a> &quot;[Tweak-Optimize tcpip parameters for nginx connections.reg&quot;)注册表项至windows服务器,双击执行,优化修改TCP回收时间和端口范围,重启服务器生效,需跟项目经理确认是否可以重启服务器。</p> <h3>Linux+tomcat</h3> <p>未完待续</p>

页面列表

ITEM_HTML