监控opensips在线服务器

时间:2015-09-24 06:51:11

标签: opensips

我必须对opensips服务器进行一些性能测试,但我无法启动。

为了产生流量,我将使用SIPP。我无法找到如何实时监控opensips的性能。

我知道有工具 - opensipsctl ,但我无法运行它。它给出了以下错误:

ERROR: Error opening OpenSIPS's FIFO /tmp/opensips_fifo
ERROR: Make sure you have the line 'modparam("mi_fifo", "fifo_name", "/tmp/opensips_fifo")' in your config
ERROR: and also have loaded the mi_fifo module.

这是来自配置文件:

#### FIFO Management Interface
loadmodule "mi_fifo.so"
modparam("mi_fifo", "fifo_name", "/tmp/opensips_fifo")
modparam("mi_fifo", "fifo_mode", 0666)

我试图从论坛找到原因。

我还尝试安装nagios但无法为opensips添加服务,基本上无法理解如何操作。

我对内存管理有另一个疑问。据我了解,opensips使用预先配置的内存量,无论有多少内存可用。我想这意味着我将无法找到实际的内存消耗。我甚至测试了一些负载,我刚刚看到CPU使用率的峰值,并且没有内存使用量的峰值。如果我理解错误,请更正。

我真的需要一些帮助才能理解如何做到这一点。

由于

1 个答案:

答案 0 :(得分:2)

要解决与mod_fifo相关的错误,请确认/ tmp / mod_fifo文件是否存在。如果不是这样做的话

public static void main(String[] args) throws FileNotFoundException, IOException {

        FileReader fr = new FileReader("\\pathtofile\\data.txt");

        BufferedReader br = new BufferedReader(fr);
        int nextLetter;
        int[] count = new int[26];
        int total = 0;
        int other = 0;

        System.out.println("Letter            Frequency");    
        while ((nextLetter = br.read()) != -1) {
            char current = (char) nextLetter;
            current = Character.toLowerCase(current);
            if (current >= 'a' && current <= 'z') {
                count[current - 'a']++;
                total++;
            } else {
                other++;
            }
        }
        Map ans = sorting(count);  
        printMap(ans);
    }

    private static Map sorting(int[] count) {
        Map m = new LinkedHashMap<String, Integer>() {};
        int k = 0 ;
        for (int i = 0; i < 26; i++) {
             int max =-1;
            for (int j = 0; j < 26; j++) {
                if(max < count[j]){
                    max = count[j];
                    k = j;
                }
            }     
            count[k] = -1;
            if(max!=0)
            m.put(((char)(k+97))+"", max);
            max=0;
        }
        return m;
    }

    public static void printMap(Map<String, Integer> map)
    {
        for (Entry<String, Integer> entry : map.entrySet())
        {
            System.out.println("" + entry.getKey() + "     : "+ entry.getValue());
        }
    }

关于你的记忆疑问, 私有内存是一个进程使用的内存,而共享内存是 所有进程都可访问的内存(这是一种IPC方法,请参阅 http://en.wikipedia.org/wiki/Shared_memory)。

使用私人记忆 对于某个过程进行某些处理所需的临时存储, 而共享内存用于存储必须可访问的数据 所有过程。 Opensips init脚本具有与内存相关的参数。

希望这有帮助。