HP-UX

[문의] Could not open /dev/ip 공간이 부족합니다. <- 이 메세지에 대해서 알려주세요.

 
문보선
비정기 기여자

[문의] Could not open /dev/ip 공간이 부족합니다. <- 이 메세지에 대해서 알려주세요.

안녕하세요. 오늘 특이한 에러 때문에 어쩔 수 없이 서비스를 중단하고 서버를 리붓한

일 때문에 이렇게 문의 드립니다.



O/S 버전: hp.ux 11.00



증상1. 어느 순간 부터 Ping을 나가는데 Telnet, FTP 등 접속이 안됩니다.

그러다가 시간이 좀 지나니 사용자가 웹 접속도 안되었습니다.

그러나 기존에 접속해 있던 Telnet 창은 끊기지 않았습니다.



증상2. 기존에 접속된 창에서 netstat 명령을 실행하니

" Could not open /dev/ip 공간이 부족합니다. " 란 에러 메세지가 뜹니다.

bdf 명령으로 디스크 정보를 보면 Full된 파티션은 없었습니다.

서비스 중인 모든 프로세스를 중단(그룹웨어, 오라클 등)해도 나아지질 않습니다.



도대체 어디를 어떻게 봐야 할지 감이 안잡히네요. ㅠ.ㅠ

(첨부는 dmesg 실행 결과 파일 입니다.)



일단 서버를 리부팅하니까 정상적으로 돌아왔지만... 한 번 발생한 일이 또 발생하지 않

는다는 보장이 없어서 여러 고수님들께 문의 드립니다.





그럼 즐거운 하루되세요.
6 응답 6
김병수
본과생

[문의] Could not open /dev/ip 공간이 부족합니다. <- 이 메세지에 대해서 알려주세요.

글쎄요..



dmesg log를 보면 그리 특별한 장애는 보여지지 않습니다.



rebooting을 하였으면 OLDsyslog.log file이 있을것입니다.



확인을 하여 보시기 바랍니다.



그럼~~~~
문보선
비정기 기여자

[문의] Could not open /dev/ip 공간이 부족합니다. <- 이 메세지에 대해서 알려주세요.

알려주신 대로 OLDsyslog 파일을 발견하고 내용을 봤지만...

머가먼지.. ㅠ.ㅠ

염치불구하고 다시 한 번 부탁드립니다.

김병수
본과생

[문의] Could not open /dev/ip 공간이 부족합니다. <- 이 메세지에 대해서 알려주세요.

error의 내용과 관련된 내용입니다.



PROBLEM

From 11.0, application server - informix / oracle / inetd /

etc - sometimes causes "No buffer space available" or ENOBUFS.

This didn't happen on 10.X. Why this happens and how should

we cope with this error ?





RESOLUTION

How this symptom can be seen:

=============================

The symptom can be seen with any 'server' type application

which calls accept() system call. Inetd can also cause this

error on 11.0. Some customers see this with informix / oracle

and other major application's server daemon. The errno(see

man errno, for more details) is defined like





#define ENOBUFS 233 /* No buffer space available */





in /usr/include/sys/errno.h. The way of printing this error

varies. Some application can just leave '233' in its log file.

Sophisticated application would call perror(3C) or

strerror(3C) to print the corrsponding error message(for

ENOBUFS, the message is "No buffer space available").





What ENOBUFS means:

===================

In many cases, ENOBUFS just means there's no sufficient

memory available and the system(kernel) can not allocate

any more. This is general definition and in most of case

such situtaion can be regarded as transient resource

shortage. And each system call can add some more information

in man pages if there're some specific meaning for each

error. Application will usually retry the operation when it

detects this error from a system call since it indicates

there's transient resource shortage.





When you look at accept(2), you will find the following

explanation:





No buffer space is available. The accept() cannot

complete. The queued socket connect request is

aborted.





Why 11.0 accept() can cause ENOBUFS?

====================================

The description has not been changed at 11.0. However,

the implementation of accept() system call was changed

at 11.0(Transport stack has changed drastically due to

STREAMS based TCP/IP). And it can return -1 with

errno=ENOBUFS based on the condition of "the queued socket

connect request is aborted". Here, this means the transport

stack received RST just after SYN was received. If RST comes

before accept() is done, this situation can happen.





위의 내용과 관련된 tcp/ip parameter는 tcp_conn_request_max 가 있습니다 이값을 증가시켜보시구요.



# ndd -get /dev/tcp tcp_conn_request_max 설정값 확인



# ndd -set /dev/tcp tcp_conn_request_max 1024



반드시 최신의 bundle patch를 적용하시길 바랍니다.



그럼~~
Joseph
초등학생

[문의] Could not open /dev/ip 공간이 부족합니다. <- 이 메세지에 대해서 알려주세요.

안녕하세요..^^



Oldsyslog.log를 보니깐 마지막부분에서 critical한 메세지가 발생했네요.



/opt/resmon/bin/resdata -R 145096706 -r /system/events/system_status/ui_host/iksaned -n 145096705 -a

위 명령어를 실행하라고 되어있는데... 한 번 실행해 보세요..

체크하는 명령어라 운영중에 상관 없거든요...



그리고 혹시 EMC 스토리지를 사용하고 있는지?



사용하고 있다면 EMC스토리지에서 발생한 에러 같다는 생각이 듭니다..



우선 위 체크 명령어의 실행 결과를 알고 싶군요^^



Good day.
문보선
비정기 기여자

[문의] Could not open /dev/ip 공간이 부족합니다. <- 이 메세지에 대해서 알려주세요.

말씀하신 대로

ndd -get /dev/tcp tcp_conn_request_max 의 값이 "20" 이었습니다.

일단 이걸 1024로 수정했습니다.

그래서 여기저기서 째벼서

ndd -set /dev/tcp tcp_conn_request_max 1024 : 수정전 20

ndd -set /dev/tcp tcp_fin_wait_2_timeout 900000 : 수정전 0

ndd -set /dev/tcp tcp_ip_abort_interval 60000 : 수정전 600000

ndd -set /dev/tcp tcp_keepalive_interval 900000 : 수정전 15000

일케 수정은 했습니다.

혹시 ndd 셋팅에 관한 자세한 설명이 나와있는 곳 없을까요?



그리고

/opt/resmon/bin/resdata -R 145096706 -r /system/events/system_status/ui_host/iksaned -n 145096705 -a

이 명령은 실행하니까 아래 메세지만 뜨고 마네요..

-----------------

There is no active monitor request for the resource /system/events/system_status/ui_host/iksaned

associated with the request id 145096706.

-----------------



여러분들 도움으로 일단 급한 고비는 넘긴 것 같습니다.

감사합니다. 복바드세요.

김병수
본과생

[문의] Could not open /dev/ip 공간이 부족합니다. <- 이 메세지에 대해서 알려주세요.

ndd 의 설정값은 변수가 많은 관계로 해당 application의 특성및 환경이 좌우합니다.



따라서 tcp/ip kernel parameter가 의미하는 것을 알면 됩니다.



그리고 이러한 값들은 application마다 권고하는 값이 있으니 그것으로 설정하면 될것으로 생각이 드네여..



관련 자료를 첨부합니다.