오늘 Redis 사용 도중… “Cannot allocate memory” 오류를 만났다..
이미 많이 알려진 유명한 오류던데.. 나만 몰랐다.. ㅎㅎㅎㅎ
아무튼 한건 기분좋게 해결했다.
관련 내용은 당연히 위키 페이지에 정리해두었다. 🙂
오늘 Redis 사용 도중… “Cannot allocate memory” 오류를 만났다..
이미 많이 알려진 유명한 오류던데.. 나만 몰랐다.. ㅎㅎㅎㅎ
아무튼 한건 기분좋게 해결했다.
관련 내용은 당연히 위키 페이지에 정리해두었다. 🙂
아파치에 ssl 설정을 하고 https 접속을 하려는데 다음의 오류가 나왔다.
Secure Connection Failed
An error occurred during a connection to pchero21.com. SSL received a record that exceeded the maximum permissible length. (Error code: ssl_error_rx_record_too_long)
The page you are trying to view cannot be shown because the authenticity of the received data could not be verified.
Please contact the website owners to inform them of this problem.
구글링을 해봐도 ssl 모듈을 활성화 시키라는 이야기만 나오고…. 단지 설정값을 이리저리 바꿔보고 테스트하는 삽질만 하고 있었다.
그러다가, 짚히는 부분이 있어서, ssl 인증서를 다시 만들고 테스트를 해봤더니 잘 되었다.
처음 SSL 인증서를 만들 때, 다음의 명령어를 사용했었다.
sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout ./postfix.key -out ./postfix.crt
문제가 되었던 부분은 rsa:2048 부분이었다.
다음의 명령어로 다시 ssl 인증서를 만들고 설정하니 잘 되었다.
sudo openssl req -x509 -nodes -days 3650 -newkey rsa:1024 -keyout ./postfix.key -out ./postfix.crt
라즈베리 파이를 사면서부터 이걸로 무엇을 해볼까 고민했었는데, 일단은 개인용 클라우드 시스템을 만들기로 했었다.
가이드와 여러 자료들을 살펴가며 열심히 서버를 설정했다.
이윽고, 모든 설치가 정상적으로 설치되고 사용하려고 하는데…
한가지 문제점이 있었다.
최초 클라우드 시스템 동기화를 위해 내 파일들을 업로드를 하는데 시간이 너무 오래 걸리는 것이었다.
하루는 밤새도록 켜놓고 있었는데, 20M 업로드를 했다.
이대로는 못쓰겠다 싶어서 설치 과정중에 문제가 있을까 싶어 몇번이고 재설치를 반복했다.
또한 클라우드 시스템에 붙이기 위해 새로 구입한 외장형 하드디스크도 문제가 있는 것 같아 그 부분도 같이 검증했다.
하드디스크가 좀 걱정이 되었으나 다행히 그부분은 문제가 아니었다.
무엇이 문제였을까…
현상은 파일 업로드가 지나치게 느리다는 것, 클라이언트쪽 실패 메시지를 확인해보니 단지 “Internal Error”라고만 나왔다.
결국 서버쪽 에러 로그를 확인하고난 뒤에서야 원인을 파악할 수 있었는데, 이유인 즉 Sqlite 때문이었다.
Sqlite는 DB Input/Ouput 시 DB 전체에 데이터베이스 Lock 을 걸어버린다.
보통은 이 속도가 금방이기 때문에 순식간에 지나가는데, 이 경우는 무엇때문인지는 모르겠으나,오류 발생 이후 업로드 재시도까지 굉장한 시간이 걸리는 것 같았다.
아무튼 문제는 Sqlite 로 진단하고 Mysql 로 변경해서 설치를 진행한 후, 정상적으로 작동한 것을 확인했다.
아래 내용들은 GCC49 버전으로 컴파일 했을 때 발생한 에러들이다.
GCC46 버전으로 컴파일 시, 다른 에러들이 발생할 수 있다. 가급적 최신의 컴파일러를 사용하자.
Asterisk 컴파일 에러.
컴파일 중 발생한 에러로서, 참조 에러이다. 파일 수정이 필요하다.
creating config.h
[LD] abstract_jb.o acl.o adsi.o alaw.o aoc.o app.o ast_expr2.o ast_expr2f.o asterisk.o astfd.o astmm.o astobj2.o audiohook.o autochan.o autoservice.o backtrace.o bridge.o bridge_after.o bridge_basic.o bridge_channel.o bridge_roles.o bucket.o callerid.o ccss.o cdr.o cel.o channel.o channel_internal_api.o chanvars.o cli.o config.o config_options.o core_local.o core_unreal.o crypt.o data.o datastore.o db.o devicestate.o dial.o dns.o dnsmgr.o dsp.o endpoints.o enum.o event.o features.o features_config.o file.o fixedjitterbuf.o format.o format_cap.o format_pref.o frame.o framehook.o fskmodem.o global_datastores.o hashtab.o heap.o http.o image.o indications.o io.o jitterbuf.o json.o loader.o lock.o logger.o manager.o manager_bridges.o manager_channels.o manager_endpoints.o manager_mwi.o manager_system.o md5.o media_index.o message.o mixmonitor.o named_acl.o netsock.o netsock2.o optional_api.o parking.o pbx.o pickup.o plc.o poll.o presencestate.o privacy.o rtp_engine.o say.o sched.o sdp_srtp.o security_events.o sem.o sha1.o sip_api.o slinfactory.o sorcery.o sounds_index.o srv.o stasis.o stasis_bridges.o stasis_cache.o stasis_cache_pattern.o stasis_channels.o stasis_endpoints.o stasis_message.o stasis_message_router.o stasis_system.o stdtime/localtime.o strcompat.o strings.o stun.o syslog.o taskprocessor.o tcptls.o tdd.o term.o test.o threadpool.o threadstorage.o timing.o translate.o udptl.o ulaw.o utils.o uuid.o version.o xml.o xmldoc.o editline/libedit.a -> asterisk
ast_expr2.o: In function `op_func’:
/usr/local/src/asterisk-12.2.0/main/ast_expr2.y:884: warning: powl has lower than advertised precision
/usr/local/bin/ld: asterisk: local symbol `__progname’ in /usr/lib/crt1.o is referenced by DSO
/usr/local/bin/ld: final link failed: Bad value
collect2: error: ld returned 1 exit status
gmake[2]: *** [asterisk] Error 1
gmake[1]: *** [main] Error 2
gmake[1]: Leaving directory `/usr/local/src/asterisk-12.2.0′
*** Error code 2Stop.
make: stopped in /usr/local/src/asterisk-12.2.0
해결책은 해당 에러가 난 후에, main/asterisk.exports 파일에 다음의 패치 내용을 적용해주면 된다.
--- /usr/ports/net/asterisk/work/asterisk-1.8.11.0/main/asterisk.exports 2012-04-01 11:19:50.532808549 -0700
+++ /root/asterisk.exports 2012-04-01 10:43:28.258979089 -0700
@@ -44,6 +44,8 @@
res_srtp;
res_srtp_policy;
secure_call_info;
+ __progname;
+ environ;
local:
*;
};
spandsp 모듈 에러.
spandsp 모듈은 FAX 관련 모듈로 설치시 다음과 같은 오류가 발생했다.
[CC] res_speech.c -> res_speech.o
[LD] res_speech.o -> res_speech.so
[CC] res_fax_spandsp.c -> res_fax_spandsp.o
res_fax_spandsp.c: In function ‘spandsp_v21_new’:
res_fax_spandsp.c:470:52: error: ‘MODEM_CONNECT_TONES_FAX_CED_OR_PREAMBLE’ undeclared (first use in this function)
p->tone_state = modem_connect_tones_rx_init(NULL, MODEM_CONNECT_TONES_FAX_CED_OR_PREAMBLE, spandsp_v21_tone, p);
^
문제의 원인은 낮은 버전의 라이브러리를 설치했기 때문이었다. 내가 설치했던 spandsp 패키지에서 제공하는 헤더파일에는 “MODEM_CONNECT_TONES_FAX_CED_OR_PREAMBLE” 선언이 없었던 것.
이미 Asterisk 를 설치한 다른 시스템에서 해당 헤더파일을 비교한 후에야 문제를 해결할 수 있었다.
해당 선언이 들어있는 패키지는 spandsp-devel 패키지이다.
그냥 설치하려고 하면 의존성 문제가 발생하므로 이전에 설치한 패키지를 지우고 새로 설치하도록 하자.
pkg delete spandsp
pkg install spandsp-devel
참조 : http://forums.asterisk.org/viewtopic.php?f=1&t=81017
————————————————————————–
하지만 make install 과정에서 asterisk.h 파일을 찾을 수 없다는 에러만 계속 나왔다.
결국 적당한 시점에서 타협을 해야 했는데.. 그냥 pkg 에 올려져 있는 asterisk 를 사용하기로 했다.
설치한 asterisk 버전은 11.8.1 이다.
사용가능한 Python 모듈들을 알아보기 위해 python 인터프리터에서 전체 모듈보기 명령어를 입력했는데, 다음과 같은 오류 메시지를 확인했다.
pchero@MyDebian:/usr/lib/pymodules/python2.7$ python Python 2.7.3 (default, Mar 13 2014, 11:03:55) [GCC 4.7.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> help('modules') Please wait a moment while I gather a list of all available modules... /usr/lib/python2.7/dist-packages/gobject/constants.py:24: Warning: g_boxed_type_register_static: assertion `g_type_from_name (name) == 0' failed import gobject._gobject /usr/lib/python2.7/dist-packages/gtk-2.0/gtk/__init__.py:57: GtkWarning: could not open display warnings.warn(str(e), _gtk.Warning) /usr/lib/python2.7/dist-packages/gi/module.py:142: Warning: cannot register existing type `GtkWidget' g_type = info.get_g_type() /usr/lib/python2.7/dist-packages/gi/module.py:142: Warning: cannot add class private field to invalid type '<invalid>' g_type = info.get_g_type() /usr/lib/python2.7/dist-packages/gi/module.py:142: Warning: g_type_add_interface_static: assertion `G_TYPE_IS_INSTANTIATABLE (instance_type)' failed g_type = info.get_g_type() /usr/lib/python2.7/dist-packages/gi/module.py:142: Warning: cannot register existing type `GtkBuildable' g_type = info.get_g_type() /usr/lib/python2.7/dist-packages/gi/module.py:142: Warning: g_type_interface_add_prerequisite: assertion `G_TYPE_IS_INTERFACE (interface_type)' failed g_type = info.get_g_type() /usr/lib/python2.7/dist-packages/gi/module.py:142: Warning: g_once_init_leave: assertion `result != 0' failed g_type = info.get_g_type() /usr/lib/python2.7/dist-packages/gi/module.py:146: Warning: g_type_get_qdata: assertion `node != NULL' failed type_ = g_type.pytype
그리고 Hang 이 걸린듯 더이상 진행되지 않았다.
해결법을 찾던 도중, http://blog.rabbitvcs.org/archives/312 에서 비슷한 현상에 대한 해결법을 찾았는데 뭔가 완벽하진 않았다.
http://stackoverflow.com/questions/13301100/python-fail-to-display-list-of-modules 여기도 역시…
내용인 즉, help(‘modules’) 를 입력하기 전에 gtk 모듈을 먼저 load 하라는 것인데.. 깔끔하지 않았다.
pchero@MyDebian:/etc$ python Python 2.7.3 (default, Mar 13 2014, 11:03:55) [GCC 4.7.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import gtk /usr/lib/python2.7/dist-packages/gtk-2.0/gtk/__init__.py:57: GtkWarning: could not open display warnings.warn(str(e), _gtk.Warning) >>> >>> >>> help('modules') Please wait a moment while I gather a list of all available modules... /usr/lib/python2.7/dist-packages/keybinder/__init__.py:26: GtkWarning: IA__gdk_keymap_get_for_display: assertion `GDK_IS_DISPLAY (display)' failed from _keybinder import * /usr/lib/python2.7/dist-packages/keybinder/__init__.py:26: GtkWarning: IA__gdk_screen_get_root_window: assertion `GDK_IS_SCREEN (screen)' failed from _keybinder import * ** (.:7702): WARNING **: keybinder_init: Unable to open display ANSI _codecs_iso2022 fdpexpect pyatspi ArgImagePlugin _codecs_jp feedparser pyclbr BaseHTTPServer _codecs_kr filecmp pycurl Bastion _codecs_tw fileinput pydoc BdfFontFile _collections fnmatch pydoc_data BeautifulSoup _csv formatter pyexpat BeautifulSoupTests _ctypes fpconst pygtk BmpImagePlugin _ctypes_test fpectl pynotify BufrStubImagePlugin _curses fpformat quopri CDROM _curses_panel fractions random CGIHTTPServer _dbus_bindings freeswitch re Canvas _dbus_glib_bindings ftplib readline ConfigParser _elementtree functools reportbug ContainerIO _functools future_builtins reportlab Cookie _hashlib gc repr CurImagePlugin _heapq gconf resource DLFCN _hotshot genericpath rexec DcxImagePlugin _imaging getopt rfc822 Dialog _imagingcms getpass rlcompleter DocXMLRPCServer _imagingft gettext robotparser EpsImagePlugin _imagingmath gi runpy ExifTags _io gio scanext FSM _json glib sched FileDialog _locale glob screen FitsStubImagePlugin _lsprof gnome select FixTk _multibytecodec gnome_sudoku serial FliImagePlugin _multiprocessing gnomecanvas sets FontFile _pyio gnomevfs setuptools FpxImagePlugin _random gobject sgmllib GbrImagePlugin _renderPM grp sgmlop GdImageFile _rl_accel gtk sha GifImagePlugin _socket gtkunixprint shelve GimpGradientFile _sqlite3 gtweak shlex GimpPaletteFile _sre gzip shutil GnuPGInterface _ssl hamster signal GribStubImagePlugin _strptime hashlib site HTMLParser _struct heapq sitecustomize Hdf5StubImagePlugin _symtable hmac smtpd HelloModule _sysconfigdata hotshot smtplib IN _sysconfigdata_nd hpmudext sndhdr IcnsImagePlugin _testcapi htmlentitydefs socket IcoImagePlugin _threading_local htmllib softwareproperties ImImagePlugin _warnings httplib speechd Image _weakref httplib2 speechd_config ImageChops _weakrefset ihooks spwd ImageCms abc imaplib sqlite3 ImageColor aifc imghdr sre ImageDraw antigravity imp sre_compile ImageDraw2 anydbm importlib sre_constants ImageEnhance apt imputil sre_parse ImageFile apt_inst inspect ssl ImageFileIO apt_pkg invest starpy ImageFilter aptdaemon io stat ImageFont aptsources itertools statvfs ImageGL argparse json string ImageGrab array keybinder stringold ImageMath ast keyword stringprep ImageMode asynchat lib2to3 strop ImageOps asyncore libxml2 struct ImagePalette atexit libxml2mod subprocess ImagePath atk linecache sunau ImageQt audiodev linuxaudiodev sunaudio ImageSequence audioop locale symbol ImageShow axi logging symtable ImageStat base64 louis sys ImageTransform bdb lsb_release sysconfig ImageWin binascii macpath syslog ImtImagePlugin binhex macurl2path tabnanny IptcImagePlugin bisect mailbox tarfile JpegImagePlugin bonobo mailcap telnetlib McIdasImagePlugin brlapi mako tempfile MicImagePlugin bsddb markupbase termios MimeWriter bz2 markupsafe test MpegImagePlugin cPickle marshal test1 MspImagePlugin cProfile math textwrap ORBit cStringIO md5 this OleFileIO cairo mhlib thread OpenSSL calendar mimetools threading PAM caribou mimetypes tidy PIL cgi mimify time PSDraw cgitb mmap timeit PaletteFile chardet mod_fstest tkColorChooser PalmImagePlugin chunk mod_test tkCommonDialog PcdImagePlugin cmath modulefinder tkFileDialog PcfFontFile cmd multifile tkFont PcxImagePlugin code multiprocessing tkMessageBox PdfImagePlugin codecs mutex tkSimpleDialog PixarImagePlugin codeop netrc toaiff PngImagePlugin collections new token PpmImagePlugin colorsys nis tokenize PsdImagePlugin commands nntplib trace Queue compileall ntpath traceback SOAPpy compiler nturl2path ttk ScrolledText contextlib numbers tty SgiImagePlugin cookielib numpy turtle SimpleDialog copy opcode twisted SimpleHTTPServer copy_reg operator types SimpleXMLRPCServer crypt optparse unicodedata SocketServer csv orca unittest SpiderImagePlugin ctypes os uno StringIO cupsext os2emxpath unohelper SunImagePlugin curl ossaudiodev urllib TYPES curses packagekit urllib2 TarIO datetime pango urlparse TgaImagePlugin dbhash pangocairo user TiffImagePlugin dbm parser uu TiffTags dbus pcardext uuid Tix deb822 pdb vte Tkconstants debconf pexpect warnings Tkdnd debian pickle wave Tkinter debian_bundle pickletools weakref UserDict debianbts pip webbrowser UserList decimal pipes whichdb UserString defer pkg_resources wnck WalImageFile difflib pkgutil wsgiref WmfImagePlugin dircache platform xapian XVThumbImagePlugin dis plistlib xdg XbmImagePlugin distutils popen2 xdrlib XpmImagePlugin doctest poplib xml _LWPCookieJar drv_libxml2 posix xmllib _MozillaCookieJar dsextras posixfile xmlrpclib __builtin__ dumbdbm posixpath xxsubtype __future__ dummy_thread pprint zeitgeist _abcoll dummy_threading profile zipfile _ast easy_install pstats zipimport _bisect email pty zlib _bsddb encodings pwd zope _codecs errno pxssh _codecs_cn exceptions pyHnj _codecs_hk fcntl py_compile Enter any module name to get more help. Or, type "modules spam" to search for modules whose descriptions contain the word "spam".