오픈에러 24번.... 갑자기 왜??

jwy22의 이미지

안녕하세요.
현제 보드게임하나를 운영하고 있습니다.
게임서버가 잘운영되다가 갑자기 문제를 일으켰는데...정확한 문제의 원인을 찾기 어려워서 도움을 청하려 합니다.
게임서버는 레드헷 커널 2.4.18-3smp로 RTS를 위해서 커널 컴파일을 하였습니다.
(컴파일은 제대로 진행한것 같습니다. 몇개월동안 잘 사용하고 있었습니다.)

최근 몇일 사이에 서버가 일정 시간이 지나면 죽어서 원인을 찾아 보던중에
평소에는 쌓이지 않은 로그가 쌓여서 확인해보니 exit() 함수가 있더군요.
exit 로 인해서 서버가 죽는것을 간단히 테스트를 해서 확인했습니다.
일단 서버가 죽는것은 막았는데...
이젠 일정시간이 지나면 같은 로그가 뜨면서 제대로 동작하지 않습니다.
파일(fopen, accept) 오픈을 할 수 없다고 하면서 에러번호(errno) 24번이라고 찍으면서 더이상의 소켓접속도 파일 쓰기도 하지 않습니다.
혹시나 해서
sysctl -a 로 확인해 봤습니다.

fs.lease-break-time = 45
fs.dir-notify-enable = 1
fs.leases-enable = 1
fs.overflowgid = 65534
fs.overflowuid = 65534
fs.dentry-state = 3561  748     45      0       0       0
fs.dquot-nr = 0 0
fs.file-max = 52422
fs.file-nr = 3420       584     52422
fs.inode-state = 3233   0       0       0       0       0       0
fs.inode-nr = 3233      0

핸들러값은 아직 넉넉했습니다.
메모리도 아주많이 남았구요.

어디를 어떻게 확인을 해줘야 할지 난감합니다. 비슷한 경험을 하신 분들이 있으리라고 생각합니다.
이것 때문에 몇일째 고생중이라.. 제대로 질문한것인지 모르겠습니다.
간단한 조언이라도 부탁드립니다.
감사합니다.

datamind의 이미지

비슷한 경험을 해본적이 없지만,
답답한 심정을 조금이나마 달래드리고자 몇글자 써봅니다.
제생각에는 커널 리소스를 좀더 확인해 볼 필요가 있을 것 같습니다.
소켓생성에 실패를 하였다는 것은,
아무래도 자신이 가지고 있는 리소스가 부족하다는 뜻 같은데요,,
RTS 사용시 커널 재컴파일시 문제점이 발생하는지도,
확인해 보아야 할것 같네요...
그럼,, 수고하세요...

angpoo의 이미지

errno 24면 too many open files인데
열고서 닫지 않은게 있는지 살펴보는게 먼저가 아닐런지요.
ulimit도 확인해보시고요.

jwy22의 이미지

먼저 답변 감사합니다.

커널 재 컴파일시 문제점이라면 어떻게 확인 가능한가요?

위의 내용에서 빠졌습니다.

서버구조는 RTS + thread pool 입니다.

내손안에는 아직 비장의 무기가 남아 있다.
그것은 희망이다.
-나폴레옹-

최종호의 이미지

일단 커널쪽 문제보다는 angpoo 님 말씀대로 close를 안 해준 문제가 아닐까
보이는데요.
간단히 lsof 등을 때려서 현재 open된 파일들 리스트를 확인해 보세요.
그리고 현재 프로세스에서 최대로 열 수 있는 파일갯수도 한번 찍어보시고요.

음..
제 리눅스 테스트 장비에서는 기본이 1024 가 나오네요..
Linux hostname 2.6.5-1.358 #1 Sat May 8 09:04:50 EDT 2004 i686 i686 i386 GNU/Linux

잘 돌아가던 프로그램이 갑자기 그런다는 게 좀 이상하긴 하네요. ㅡ.ㅡ

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.