Articles of 内存不足

使用Psycopg2来保持Python和Postgresql之间的连续连接的最佳/最佳实践

我正在用Python编写一个应用程序,Postgresql 8.3在本地networking上的多台机器上运行。 所有机器 1)从数据库服务器获取大量的数据(让数据库在2秒钟内从一台机器获得100个不同的查询),大约有10或11台机器。 2)处理数据后,机器必须更新某些表(每1.5秒钟每个机器大约3或4次更新/插入查询)。 我注意到,数据库因服务器中止进程exception或服务器机器冻结(需要硬复位)而有时会停止运行。 顺便说一下,所有机器在任何时候都保持与数据库的连接,即一旦使用Psycopg2(以Python)进行连接,它将一直处于活动状态,直到处理完成(可能持续数小时)。 在应用程序中处理大量连接的最佳/最佳方式是什么?如果在每个查询之后它们被销毁? 其次,我应该增加max_connections? 将不胜感激关于这个问题的任何意见。

java的OutOfMemory问题 – 堆转储800 MB比configuration的最大堆小

我有一个在Oracle App Server 10.1.3中部署的Web应用程序,在一个oc4j中,以32位RHEL上的1Gb初始堆和2 Gb最大堆开始,configuration为查看32 Gb的RAM。 最近我遇到了OutOfMemory错误,所以我configuration了应用程序在OutOfMem上创build堆转储。 所以我有4-5个堆转储,每个转储大小不超过1.2Gb(因此比最大堆大小小800Mb)。 另外,平均每小时在机器上免费使用约20Gb的免费内存。 这是否意味着应用程序试图一次性分配800 Mb? 或者如果有两个或更multithreading同时尝试分配内存,那么它们都会失败,即使我们假设每个内存都有内存,但是两者的总和却不一样? 可能有一个与Linux机器的PB,也许它不能给内存到Java? 内存是否可以被分割,也许32位机器能够看到32G内存的configuration有一个pb? (我应该提到,应用程序最近没有变化,但在该机器上一个新的oc4j和一个新的应用程序被部署了,并且吃了1-2g的ram)

充满10M +日志文件的文件夹,我无法删除它们

我有一个logging过程在我的一台服务器上出现故障,现在我有很多我无法删除的文件: ➜ logs ls -l | wc -l 11135951 ➜ logs rm log* -bash: fork: Cannot allocate memory 想法? 我可以吹走服务器,但我真的很好奇如何解决这个问题。

Python多处理 – debuggingOSError:无法分配内存

我正面临以下问题。 我试图并行化一个函数,更新文件,但我不能启动Pool()因为OSError: [Errno 12] Cannot allocate memory 。 我已经开始在服务器上四处查看了,而不是像我正在使用一个旧的,弱的/实际的内存。 请参阅htop : 另外, free -m显示除了〜7GB的交换内存之外,我还有大量的RAM: 而我正在尝试使用的文件也不是那么大。 我将在下面粘贴我的代码(和堆栈跟踪),大小如下: 使用的predictionmatrixmatrixdataframe占用了大约。 80MB根据pandasdataframe.memory_usage()文件geo.geojson是2MB 我怎么去debugging呢? 我可以检查什么以及如何? 感谢您的任何提示/技巧! 码: def parallelUpdateJSON(paramMatch, predictionmatrix, data): for feature in data['features']: currentfeature = predictionmatrix[(predictionmatrix['SId']==feature['properties']['cellId']) & paramMatch] if (len(currentfeature) > 0): feature['properties'].update({"style": {"opacity": currentfeature.AllActivity.item()}}) else: feature['properties'].update({"style": {"opacity": 0}}) def writeGeoJSON(weekdaytopredict, hourtopredict, predictionmatrix): with open('geo.geojson') as f: data […]

我怎样才能在linux上编辑proc / pid / oom_adj进程

我有一个情况,我们的服务器正在杀死一个我不想被杀死的进程。 我的理解是,这是因为内核过度使用内存,然后在内存耗尽时被迫终止进程。 我的理解是,通过调整以下值,我可以影响内核关于在这种情况下杀死哪个进程的决定: 的/ proc / [PID] / oom_adj 本文解释了所有这些: http://www.oracle.com/technetwork/articles/servers-storage-dev/oom-killer-1911807.html 但是,当我以ubuntu用户身份试用这个命令时,我得到了Permission denied错误: echo -15> / proc / 5641 / oom_adj -bash:/ proc / 5641 / oom_adj:权限被拒绝 sudo echo -15> / proc / 5641 / oom_adj 给出了相同的错误我的理解是,这是因为shell没有以root身份执行“>”命令。 但是,我熟悉的解决方法是给“没有这样的文件或目录”错误。 sudo bash -c'echo -15> / proc / 5641 / oom_adj' -bash:/ proc / 5641 / oom_adj':没有这样的文件或目录 sudo […]

OOM杀手(内存不足)与大量的内存(?!) – inotify

我正在面临一个问题,把大量的文件夹(约2000000)。 我将max_user_watches更改为8388608: echo 8388608 > /proc/sys/fs/inotify/max_user_watches 为了支持这个数量的手表,服务器有3Gb可用内存。 但是,当我启动inotify脚本,几个小时后(〜15小时),它已经被杀死。 这是/ var / log / messages跟踪: inotify.sh invoked oom-killer: gfp_mask=0xd0, order=1, oom_adj=0 inotify.sh cpuset=/ mems_allowed=0 Pid: 12488, comm: inotify.sh Not tainted 2.6.32-5-686 #1 Call Trace: [<c1089534>] ? oom_kill_process+0x60/0x201 [<c1089ab1>] ? __out_of_memory+0xf4/0x107 [<c1089b1e>] ? out_of_memory+0x5a/0x7c [<c108c3c9>] ? __alloc_pages_nodemask+0x3ef/0x4d9 [<c108c4bf>] ? __get_free_pages+0xc/0x17 [<c102f06c>] ? copy_process+0xb7/0xf28 [<c11028ad>] ? security_file_alloc+0xc/0xd [<c1030017>] […]

java.lang.OutOfMemoryError:无法创build新的本地线程 – fs-> in_exec clone()和execve()冲突?

我偶尔遇到: – Exception in thread "main" java.lang.OutOfMemoryError: unable to create new native thread at java.lang.Thread.start0(Native Method) at java.lang.Thread.start(Thread.java:691) 我已经读了很多关于这个,我不相信我在物理内存,虚拟内存(64位JVM),线程限制,进程限制或文件描述符方面实际上是有限制的。 事实上,我甚至不确定这是否与我注意到受到影响的进程是Java进程有关。 我怀疑这是Linux内核的一个问题,或者可能取决于它是如何争论的,在Java JVM或pthread_create()中是一个问题。 我看到这台机器是一个怪物:64个处理器,512GB RAM(70GB免费)。 它运行RHES 5.11(Tikanga)2.6.18-402.el5 x86_64。 限制是这样设置的 bash-3.2$ cat /proc/sys/kernel/pid_max 65536 bash-3.2$ cat /proc/sys/kernel/threads-max 8257699 bash-3.2$ /sbin/sysctl fs.file-nr fs.file-nr = 62220 0 1048576 bash-3.2$ /sbin/sysctl fs.file-max fs.file-max = 1048576 bash-3.2$ ulimit -a core file […]

Linux内核模块OOM何时有内存caching

embedded式系统,无交换,内核v2.6.36,启用内存压缩。 在大量使用的情况下,所有的RAM都被绑定在caching中。 高速caching使用了大约70M的内存。 当用户空间进程分配内存时,没有问题,caching就放弃了。 但有一个第三方设备驱动程序似乎尝试分配一个物理5阶页面,并与OOM失败。 快速浏览buddyinfo确认这一点…没有第五订单页面可用。 但是,一旦我放弃caching,大量可用和设备驱动程序不再OOM。 所以在我看来,虚拟内存分配将触发caching下降,但物理内存分配不会? 这是没有道理的,因为当内存被绑定在caching中时,内核模块可能会出现OOM,而这种行为似乎比没有caching的慢速磁盘访问更为有害。 有没有一个调整参数来解决这个问题? 谢谢!

如何在Matlab r2012b中增加内存限制(连续的和整体的)?

我在Win7 32位和4GB RAM上使用Matlab r2012b。 但是,Matlab进程的内存限制很低。 在记忆体命令,我得到以下输出: Maximum possible array: 385 MB (4.038e+08 bytes) * Memory available for all arrays: 1281 MB (1.343e+09 bytes) ** Memory used by MATLAB: 421 MB (4.413e+08 bytes) Physical Memory (RAM): 3496 MB (3.666e+09 bytes) * Limited by contiguous virtual address space available. ** Limited by virtual address space available. 我需要尽可能地增加限制。 […]

处理,如果没有足够的内存可用来启动这个线程c#

我有一个系统启动一个新的线程与应用程序的每个请求。 如果应用程序收到数百个请求,可能没有足够的内存来启动一个新的线程,所以它会抛出一个exception。 我想知道一个处理这种情况的理想机制。 就像,如果应用程序正在接收大量的请求,那么如果没有足够的内存或活动线程数达到最大,那么我会延迟处理其他请求。 但我不知道如何实现这一点。