温馨提示×

如何用lsnrctl优化Ubuntu服务性能

小樊
37
2025-11-23 11:33:57
栏目: 智能运维

用 lsnrctl 优化 Ubuntu 上的 Oracle 监听器性能

一 基线检查与快速优化

  • 使用以下命令建立性能基线并快速定位问题:
    • 查看状态与服务映射:lsnrctl statuslsnrctl services(关注 Services 摘要中的连接分布与处理状态)。
    • 动态设置与验证:例如临时调整日志级别以排查问题,lsnrctl set log_status on,确认后再关闭以降低开销。
    • 变更生效方式:优先使用lsnrctl reload使配置热生效;涉及端口/地址等结构性变更再用stop/start
    • 日志与跟踪:排查期间可短时开启跟踪定位瓶颈,lsnrctl trace;常态运行建议关闭或减少跟踪以降低 I/O 压力。
    • 配置路径:监听器配置位于**$ORACLE_HOME/network/admin/listener.ora**,修改前先备份。

二 listener.ora 关键参数与示例

  • 并发与连接控制
    • 提升最大连接处理能力:设置CONNECTIONS_MAX(或等效的MAX_CONNECTIONS)以匹配业务峰值;设置CONNECTION_TIMEOUT避免异常长连接占用。
    • 连接稳定性:适度提高RETRY_COUNTTIME_OUT,减少瞬时网络抖动导致的建连失败。
  • 服务模型
    • 启用共享服务器以减小每连接内存占用、提升海量短连接场景的伸缩性:在SID_DESC中指定**(SERVER = SHARED)**;同时确保数据库侧已配置共享服务(SHARED_SERVERS 等)。
  • 典型示例(仅展示关键片段)
    • 多地址与 IPC、并发与超时、共享服务:
      LISTENER =
        (DESCRIPTION_LIST =
          (DESCRIPTION =
            (ADDRESS = (PROTOCOL = TCP)(HOST = your_host)(PORT = 1521))
            (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
          )
        )
      
      SID_LIST_LISTENER =
        (SID_LIST =
          (SID_DESC =
            (SID_NAME = your_sid)
            (ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
            (GLOBAL_DBNAME = your_dbname)
            (SERVER = SHARED)
          )
        )
      
      # 并发与超时(示例值,按实际压测微调)
      CONNECTIONS_MAX = 1024
      CONNECTION_TIMEOUT = 30
      RETRY_COUNT = 5
      TIME_OUT = 20
      
    • 修改后执行:lsnrctl reload(或必要时 stop/start)。

三 Ubuntu 系统层面的集成与网络优化

  • 以 systemd 托管监听器,确保可靠启动与自动恢复:
    • 新建服务文件**/etc/systemd/system/oracle-listener.service**:
      [Unit]
      Description=Oracle Listener
      After=network.target
      
      [Service]
      Type=forking
      ExecStart=/u01/app/oracle/product/19.0.0/dbhome_1/bin/lsnrctl start
      ExecStop=/u01/app/oracle/product/19.0.0/dbhome_1/bin/lsnrctl stop
      User=oracle
      Group=oracle
      Restart=on-failure
      
      [Install]
      WantedBy=multi-user.target
      
    • 启用与启动:
      sudo systemctl daemon-reload
      sudo systemctl enable --now oracle-listener
      
  • 网络与内核参数
    • 防火墙仅放通必要来源:例如sudo ufw allow from 10.0.0.0/8 to any port 1521 proto tcp
    • 降低握手延迟:在具备条件且经测试验证的前提下,启用TCP Fast Open(需同时配置内核与 Oracle 网络参数,并评估对现有客户端兼容性的影响)。

四 监控 验证与回退

  • 持续监控与按需跟踪
    • 常态巡检:lsnrctl statuslsnrctl services观察服务注册、连接数与处理状态;异常时短时lsnrctl trace抓取细节,定位后关闭跟踪以减少开销。
  • 变更流程与回退
    • 变更前备份listener.ora;优先使用reload减少中断;必要时执行stop/start
    • 若性能劣化或异常,立即回退到上一个稳定配置并复核参数合理性。

0