리눅스에서 파일 업다운 서버를 개발하는데 궁금한 점이 있습니다.

lecirar의 이미지

CentOS 5.4환경에서 파일 업다운 서버를 개발하고 있습니다.
서버 모델은 접속당 Thread방식으로 간단하게 구현했는데 한 1주일 정도 띄워 놓으면
파일 open에 많게는 60초 이상 걸리는 경우가 가끔 발생하네요.. 이유를 알 수 없습니다.
파일 open에는 fopen()을 사용하고 있습니다. Thread는 동시에 300개 정도 띄워서 pool로 관리합니다.
저런 증상이 발생할 때의 동시 접속은 100명이 좀 넘는 상황이라 큰 부하는 아니라고 생각합니다.
왜 이런 문제가 있는지 비슷한 문제를 겪어보셨거나 원인을 아시는 분 계시면 가르침을 부탁드립니다.

그리고 추가로 time()과 localtime()으로 tm 형태의 값을 얻어와서 오늘 날짜 이름으로 로그를 출력하고 있는데,
가끔씩 전혀 다른 숫자가 나오는 경우가 있네요. 20110218 로 나오다가 갑자가 20110309로 나온다던가 이럴 때가 있는데
이건 왜 그런건지도 모르겠네요. 답변 부탁드립니다..

ddoman의 이미지

혹, localtime_r()을 안쓰고, localtime()을 쓰시는건 아니겠죠?

lecirar의 이미지

보긴 봤는데 뭐하는 함수인지 잘 몰라서 넘어갔었는데 localtime()이 thread safe하지 않다는걸 덕분에 알게 됐습니다.
감사합니다..!!

이제 파일 open 느린문제만 해결되면 되겠는데...

ddoman의 이미지

lsof 와 strace를 이용하여
좀 더 상황을 파악할만한 자료를 모아보세요.

정말 fopen()에서 리턴이 블럭된 상태로 지연되다가 리턴하는게 맞는건가요?
지연되고 있을때, strace()로 어떤 시스템콜을 호출하려하는지도 찾아보시고, 혹은
fopen() 대신 open() system call을 직접 호출해보세요.

이런경우, open()의 문제보다
대부분 호출하는 프로그램의 찾기 어려운 버그로인해 발생한 경우가 많습니다.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.