首页 > 范文大全 > 正文

热轧批量轧制中服务器所暴露出来的一些问题及解决办法

开篇:润墨网以专业的文秘视角,为您筛选了一篇热轧批量轧制中服务器所暴露出来的一些问题及解决办法范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

[摘 要]在热轧进行批量生产后,由于数据量增加、系统本身一些缺陷、热轧二级服务器暴露出一些影响正常生产的问题。如模型失效、响应速度慢、时区错误、数据库内存无法分配等。

[关键词]热轧二级服务器;数据库服务器

中图分类号:TP13 文献标识码:A 文章编号:1009-914X(2015)17-0054-01

1 故障说明

在热轧进行批量生产后,由于数据量增加、系统本身一些缺陷、热轧二级服务器暴露出一些影响正常生产的问题。如模型失效、响应速度慢、时区错误、数据库内存无法分配等。

2.故障分析、结论和措施

2.1 数据库服务器问题

2.1.1 原因分析:

当前使用的操作系统和数据库结合后对使用的内存有一个分配标准,那就是无论你给服务器加了多少内存,操作系统给数据库分配的内存不能超过2G(配置文件可以改为2G以上,但不建议更改,可能会出现其它一些未知问题)。

2.1.2 结论:

我们在使用过程中经常出现无法访问数据库情况,经查询是当连接服务器的会话数过多时(超过400),对数据库访问就会出现问题,严重时候出现模型计算失效,轧制停止。经分析问题为服务器内存太小引起。

2.1.3 措施:

发现会话数过多时(超过400):关闭一些正在使用IFIX客户端软件,重新启动,因为IFIX长期使用后,会占用较多的会话数。

3.1 二级数据库时区问题

3.1.1 故障现象:

数据库记录时间和当前时间相差一天。

3.1.2 代码:

create or replace FUNCTION "FNCONVERT_GMT_TO_LOCAL" (v_TARGET_DATETIME IN TIMESTAMP) RETURN VARCHAR2 IS

SECONDSDIFF NUMBER(5,0);

LOCALDATETIME TIMESTAMP;

v_c_LOCALDATETIME VARCHAR2(40);

BEGIN

--SECONDSDIFF := (TO_NUMBER(TO_CHAR(SYSDATE, 'SSSSS')) - TO_NUMBER(TO_CHAR(SYS_EXTRACT_UTC(SYSTIMESTAMP), 'SSSSS'))) ;

SECONDSDIFF := 28800 ;

SELECT CAST(v_TARGET_DATETIME + (SECONDSDIFF/86400) AS TIMESTAMP) INTO LOCALDATETIME FROM DUAL;

v_c_LOCALDATETIME := TO_CHAR(LOCALDATETIME,'YYYY-MM-DD HH24:MI:SS') ;

RETURN v_c_LOCALDATETIME ;

--RETURN LOCALDATETIME ;

END FNCONVERT_GMT_TO_LOCAL ;

3.1.3 原因分析:

此段代码是数据库中的一个函数,用来把格林威治时间转换为北京时间,由于TMEIC程序时区转换的错误,按TMEIC转换后,它所指的时间和北京时间不一致,所以造成查询不出来或者错误。

4.1 TEMIC存储过程耗费服务器资源问题

4.1.1 故障现象:

当执行此存储过程时,服务器CPU和内存耗费巨大,造成其它应用程序访问速度变慢甚至无法正常访问数据库数据,严重时影响整个系统数据交换。

4.1.2 代码:

create or replace PROCEDURE sp_TrimHistory(maxRecs IN int) IS

t timestamp;

c int;

v_i_KeepDataInDays1 INT;

v_i_KeepDataInDays2 INT;

v_i_lineNums INT;

BEGIN

-- Variable to set the Time in days to keep the data

v_i_KeepDataInDays1 := 1; -- Days

v_i_KeepDataInDays2 := 3; -- Days

v_i_lineNums := 10000;

SELECT count(*) INTO c FROM ALARMHISTORY;

IF c > v_i_lineNums THEN

DELETE FROM ALARMHISTORY

WHERE AlarmTime < SYSDATE - v_i_KeepDataInDays2;

DELETE FROM ALARMHISTORY

WHERE GRP = 'SQL'

AND IDX = 1

AND AlarmTime < SYSDATE - v_i_KeepDataInDays1

AND ARGUMENTS LIKE

'%Ingot in Furnace, But not Existing in HSM L2 Database. Ingot%';

END IF;

SELECT count(*) INTO c FROM ALARMHISTORY;

IF c > maxRecs THEN

SELECT AlarmTime

INTO t

FROM (SELECT AlarmTime

FROM (SELECT AlarmTime

FROM ALARMHISTORY

ORDER BY AlarmTime DESC)

WHERE ROWNUM

ORDER BY AlarmTime ASC)

WHERE ROWNUM = 1;

DELETE FROM ALARMHISTORY WHERE AlarmTime < t;

END IF;

END;

4.1.3 措施:

报警数据表不到1分钟进行一次查询,里面存放的数据大约有10万条,查询时又进行了排序等工作,严重消耗内存和CPU。更改后的存储过程,在使用原存储过程进行管理前,通过时间,类型,数量等方式已经将数据减小到原存储过程所设置的极限,从而做到尽量不让它使用原先管理方案,从而大大降低内存和CPU的消耗。(具体程序见上述代码)。