힙 메모리 부족시 해결 방안 없을 까요?

wams86의 이미지

안녕하세요

그동안 좋은 자료 잘 보다가 처음으로 도움글을 쓰게 되네요.

일단 제가 고민하고 있는 문제에 대해 설명을 할께요

AIX 응용 프로그램 프로젝트에 참여하게 되었고,

거의 개발 완성의 단계 가지 왔습니다.

테스트 서버에서 검증은 되었고,

이제 실제 운영서버에 적용하여 잘돌아가느지 검증 단계에 까지왔습니다.

그런데 문제가 터지더군요.. (언제나 실적용 때에 문제가 터지네요 ㅠ_ㅠ)

문제가 무엇이냐!!

바로 운영서버에서 동작중인 프로그램들이(oracle등..) 128G나 되는 메모리를 거의다 떙겨 쓴다는 것입니다.

그렇다보니 제 프로그램에서 메모리 할당시 사용가능한 메모리가 턱없이 부족하여 죽더군요 ...
(300MB 정도의 여유 공간밖에... 제 프로그램이 필요한양은 넉넉잡아 약 2G정도)

하... 설마 이런 경우가 생길줄이야....

최적화를 한번 거쳐 중간에 데이터를 담는 구조를 삭제 하였지만..

결과는 똑같더군요..

원채 데이터 발생량이 많은 곳이라 그런것 같더군요.

힙 메모리의 여유 공간이 모자를 경우 어떤 해결방안이나 우회 방법이 없을 까요?

이런 비슷한 경험을 하신분 계시면 조언을 좀 얻고 싶습니다.

아! 참고로 C/C++로 개발하였습니다.
긴글 읽어 주셔서 고마워요 ^^

익명 사용자의 이미지

프로그램 내에서 메모리를 점유하는 부분을 최대한 없애고, 비록 느리겠지만
필요한 데이터가 있을 때마다 매번 파일 I/O 로 조금씩 가져와서 쓰는 식으로
해서 속도를 희생하고 메모리를 최소한으로 사용하게 만들 수는 있습니다.
하지만 이 방식의 경우 직접적으로 로직을 손대야 한다는 점에서 좋지 않습니다.

또는 만약 지금 메모리를 많이 쓰는 부분이 파일에서 읽어와서 그런 것이 아니라,
내부 연산때문에 많은 것이라면 일단 어느정도 프로그램 내에서 쓸 메모리 공간을
적당히 여유잡아서 계산해서 파일을 만들고 통째로 메모리에 맵핑시킵니다.
그래서 마찬가지로 메모리 쓰듯이 그냥 쓰면 됩니다.

위 방식은 로직을 손댈 필요성이 적어진다는 점에서 그나마 좋습니다.
하지만 솔직히 이렇게 하자면 결국에는 프로그램 손대야 할 곳이 있다는 점,
그리고 둘 다 속도를 희생한다는 점에서 일단 이 방법은 우선순위를 뒤로 넘겨둡니다.

그럼 프로그램 내에서는 해결이 불가능하다. 두 번째는 어쩔 수 없이 외부를 손대야 합니다.
가장 무식하고 간단한 해결법은 시스템 메모리를 늘리는 것입니다.

이 방법의 경우 흔히 DBMS 들은 전체 메모리에서 비율로 잡아서 미리 점유하고 있기 때문에
원하시는 만큼의 공간을 확보하려면 단순 계산으로 메모리를 무시무시하게 많이 늘려야합니다.

그렇다면 단순히 메모리를 늘리는 것이 아니라, DBMS 설정을 변경해서 점유 비율을 변경하면 됩니다.
하지만 보나마나 DBMS 설정을 건드리시는 것은 불가능할 것이므로 이 방법도 패스입니다.

그 이상은 저도 어떻게 해야 할지 잘 모르겠습니다.

wams86의 이미지

성능 이슈가 좀있을듯 하지만 한번 해봐야겠습니다.

댓글 감사합니다.

좋은 하루 되세요~

댓글 달기

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