用Apache做负载均衡时HTTP长连接每5分钟断线
Apache被常用来做Java应用系统的负载均衡软件,Tomcat、Websphere、Weblogic等都有相应的插件支持Apache集成负载均衡。但是最近遇到这样的问题,对于大数据量的长HTTP连接的业务每过5分钟就断线了,而且每5分钟就重发同一个http请求到应用服务器。
Apache的httpd.conf有下列两个配置参数,类似地Array、F5等负载均衡硬件也应该有这些配置:
#
# Timeout: The number of seconds before receives and sends time out.
#
Timeout 300
#
# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to "Off" to deactivate.
#
KeepAlive On
Oracle语句优化53个规则详解
1. 选用适合的ORACLE优化器
ORACLE的优化器共有3种:
a. RULE (基于规则)
b. COST (基于成本)
c. CHOOSE (选择性)
设置缺省的优化器,可以通过对init.ora文件中OPTIMIZER_MODE参数的各种声明,如RULE,COST,CHOOSE,ALL_ROWS,FIRST_ROWS . 你当然也在SQL句级或是会话(session)级对其进行覆盖。
ORACLE问答精选
Q: 如 何 使 用 Cost Based 优 化 器 优 化 查 询 操 作?
A: Oracle Server 提 供 了 基 于 成 本(Cost Based) 和 基 于 规 则(Rule Based) 两 种 优 化器, 简 称 为 CBO 和 RBO, 用 于 确 定 查 询 操 作 的 执 行 计 划。 Cost Based 优 化 器 将 计 算 各种 执 行 计 划 的 开 销, 然 后 选 出 最 低 成 本 的 执 行 计 划。 可 使 用 下 列 方 法 选 择 使 用 CBO:
方 法 1: 在 INIT<sid>.ORA 文 件 中 设 置 参 数 OPTIMIZER_MODE=choose
方 法 2: 在 Session 级 设 置 OPTIMIZER_GOAL=FIRST_ROWS 或 ALL_ROWS 例 如: alter session set optimizer_goal=first_rows;
方 法 3: 在 查 询 语 句 中 使 用 Hint, 包 括 CHOOSE,ALL_ROWS,FIRST_ROWS 等。
使用Oracle 10g中的等待界面诊断性能问题
查询V$SESSION视图来看一下会话正在等待什么。(请注意过滤掉了所有空闲事件。)
select sid, username, event, blocking_session,
seconds_in_wait, wait_time
from v$session where state in ('WAITING')
and wait_class != 'Idle';
下面以垂直格式给出输出结果。
SID : 270
USERNAME : BILL
EVENT : enq: TX - row lock contention
BLOCKING_SESSION : 254
SECONDS_IN_WAIT : 83
WAIT_TIME : 0
看到这些信息,John立刻得出结论,Bill的SID 270会话正在等待一个表上的锁,而这个锁正由254会话(BLOCKING_SESSION)占用。
但是John想知道哪条SQL语句引起了这个锁的占用。他可以通过连接V$SESSION和V$SQL视图执行下面的查询很容易地找到答案:
select sid, sql_text
from v$session s, v$sql q
where sid in (254,270)
and (
q.sql_id = s.sql_id or
q.sql_id = s.prev_sql_id);
