Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IoT Agent LWM2M Memory exhaust and production environment #88

Open
Secmotic opened this issue Aug 22, 2017 · 2 comments
Open

IoT Agent LWM2M Memory exhaust and production environment #88

Secmotic opened this issue Aug 22, 2017 · 2 comments

Comments

@Secmotic
Copy link

I'm working on a project which aims to connect +1k devices to a machine, which may probably autoscale. The problem is that with only 2 connected devices, the IDAS IoTAgent ends in a couple of days with a "Memory exhaust" message. It is running in a docker instance in a machine in AWS m3.medium with memory swap.

Is this a recomendable Generic Enabler for production? Has it been tested for a big amount of connected devices? Is this actually out of maintenance?

Thanks in advance

@fermenreq
Copy link

Hi Secmotic,

Could you please paste your config.js file ?

@Secmotic
Copy link
Author

Hello @fermenreq , Thanks for your answer.

We have been testing with different config files. This one in particular has a prototype of device that we are using, but we have tested with several, including and not including the device (so we would discard that as a problem).

We actually noticed that the problem is the CPU managing and the number of requests between Orion Context Broker and the IOTA. In our case, the simple request of the subscription is a large one, and when connecting approximately 250 devices with no data transfer, the CPU reachs about 60%. This is a problem, since a simple requests to a group of devices can block the system...




var config = {};

config.lwm2m = {
    logLevel: 'ERROR',
    port: 5684,
    defaultType: 'Device',
    ipProtocol: 'udp4',
    serverProtocol: 'udp4',
    /**
     * When a LWM2M client has active attributes, the IOTA sends an observe instruction for each one, just after the
     * client registers. This may cause cause an error when the client takes too long to start listening, as the
     * observe requests may not reach its destiny. This timeout (ms) is used to give the client the opportunity to
     * create the listener before the server sends the requests.
     */
    delayedObservationTimeout: 50,
    formats: [
        {
            name: 'application-vnd-oma-lwm2m/text',
            value: 1541
        },
        {
            name: 'application-vnd-oma-lwm2m/tlv',
            value: 1542
        },
        {
            name: 'application-vnd-oma-lwm2m/json',
            value: 1543
        },
        {
            name: 'application-vnd-oma-lwm2m/opaque',
            value: 1544
        }
    ],
    writeFormat: 'application-vnd-oma-lwm2m/text',
    types: [ {
        name: 'Device',
        url: '/'
    }]
};

config.ngsi = {
    logLevel: 'ERROR',
    contextBroker: {
        host: 'localhost',
        port: '1026'
    },
    server: {
        port: 4041
    },
    deviceRegistry: {
        type: 'mongodb'
    },
    mongodb: {
 	host: 'localhost',
	port: '27017',
	db: 'lwm2m-iota'
    },
    types: { 
	"Device": {
                service: 'smartGondor',
                subservice: '/gardens',
                active:[],
                lazy: [
                    {
                        "name": "Manufacturer",
                        "type": "string"
                    },{"name":"RemoteRequest","type":"integer"},{
                        "name": "ModelNumber",
                        "type": "string"
                    },
                    {
                        "name": "SerialNumber",
                        "type": "string"
                    },
                    {
                        "name": "FirmwareVersion",
                        "type": "string"
                    },
                    {
                        "name": "AvailablePowerSources",
                        "type": "string"
                    },
                    {
                        "name": "PowerSourceVoltage",
                        "type": "string"
                    },
                    {
                        "name": "PowerSourceCurrent",
                        "type": "string"
                    },
                    {
                        "name": "BatteryLevel",
                        "type": "string"
                    },
                    {
                        "name": "MemoryFree",
                        "type": "string"
                    },
                    {
                        "name": "ErrorCode",
                        "type": "string"
                    },
                    {
                        "name": "CurrentTime",
                        "type": "string"
                    },
                    {
                        "name": "UTCOffset",
                        "type": "string"
                    },
                    {
                        "name": "Timezone",
                        "type": "string"
                    },{
                        "name": "SupportedBindingandModes",
                        "type": "string"
                    },
                    {
                        "name": "Status",
                        "type": "integer"
                    },{
                        "name": "TSet",
                        "type": "integer"
                    },{
                        "name": "MConfigMMemberIDCode",
                        "type": "integer"
                    },{
                        "name": "SConfigSMemberIDCode",
                        "type": "integer"
                    },{
                        "name": "ASFFlagsOEMfaultcode",
                        "type": "integer"
                    },{
                        "name": "RBPflags",
                        "type": "integer"
                    },{
                        "name": "OEMfaultcode",
                        "type": "integer"
                    },{
                        "name": "TSetCH2",
                        "type": "integer"
                    },{
                        "name": "DHWRBPflags",
                        "type": "integer"
                    },{
                        "name": "TrOverride",
                        "type": "integer"
                    },{
                        "name": "MaxCapacityMinmodlevel",
                        "type": "integer"
                    },{
                        "name": "Relativemodlevel",
                        "type": "integer"
                    },{
                        "name": "TBoiler",
                        "type": "integer"
                    },{
                        "name": "Tdhw",
                        "type": "integer"
                    },{
                        "name": "Tdhw2",
                        "type": "integer"
                    },{
                        "name": "TOutside",
                        "type": "integer"
                    },{
                        "name": "Tret",
                        "type": "integer"
                    },{
                        "name": "TCollector",
                        "type": "integer"
                    },{
                        "name": "TStorage",
                        "type": "integer"
                    },{
                        "name": "TFlowCH2",
                        "type": "integer"
                    },{
                        "name": "TExhaust",
                        "type": "integer"
                    },{
                        "name": "TBoilerHeatExchanger",
                        "type": "integer"
                    },{
                        "name": "Boilerfanspeedsetpointactualvalue",
                        "type": "integer"
                    },{
                        "name": "FlameCurrent",
                        "type": "integer"
                    },{
                        "name": "DHWSetpointupperlowerbounds",
                        "type": "integer"
                    },{
                        "name": "MaxCHwatersetpointupperlowerbounds",
                        "type": "integer"
                    },{
                        "name": "DHWSetpoint",
                        "type": "integer"
                    },{
                        "name": "MaxCHwatersetpoint",
                        "type": "integer"
                    },{
                        "name": "OperatingMode",
                        "type": "integer"
                    },{
                        "name": "RemoteOverrideFunction",
                        "type": "integer"
                    },{
                        "name": "Unsucessfulburnerstarts",
                        "type": "integer"
                    },{
                        "name": "FlameSignaltoolownumber",
                        "type": "integer"
                    },{
                        "name": "OEMDiagnosticCode",
                        "type": "integer"
                    },{
                        "name": "SucessfulBurnerStarts",
                        "type": "integer"
                    },
                    {
                        "name": "CHPressure",
                        "type": "integer"
                    },{
                        "name": "CHPumpStarts",
                        "type": "integer"
                    },{
                        "name": "DHWflowrate",
                        "type": "integer"
                    },{
                        "name": "DHWpumpvalvestarts",
                        "type": "integer"
                    },{
                        "name": "DHWburnerstarts",
                        "type": "integer"
                    },{
                        "name": "BurnerOperationHours",
                        "type": "integer"
                    },{
                        "name": "CHpumpoperationHours",
                        "type": "integer"
                    },{
                        "name": "DHWpumpvalveoperationhours",
                        "type": "integer"
                    },{
                        "name": "DHWburneroperationhours",
                        "type": "integer"
                    },{
                        "name": "OpenThermversionslave",
                        "type": "integer"
                    },{
                        "name": "Slaveversion",
                        "type": "integer"
                    },{
                        "name": "DHWSetpoint",
                        "type": "integer"
                    },
                    {
                        "name":"TFlowCH2",
                        "type":"integer"
                    },{
                        "name": "RelativeHumidity",
                        "type": "integer"
                    },{
                        "name": "TSet",
                        "type": "integer"
                    },{
                        "name": "RemoteRequest",
                        "type": "integer"
                    },{
                        "name": "TsetCH2",
                        "type": "integer"
                    },{
                        "name": "MaxRelativeModulationLevelSetting",
                        "type": "integer"
                    },{
                        "name": "HcratioUBHcratioLB",
                        "type": "integer"
                    },{
                        "name": "Tsi",
                        "type": "integer"
                    },{
                        "name": "Tso",
                        "type": "integer"
                    },{
                        "name": "Tei",
                        "type": "integer"
                    },{
                        "name": "Teo",
                        "type": "integer"
                    },{
                        "name": "RPMexhaust",
                        "type": "integer"
                    },{
                        "name": "RPMsupply",
                        "type": "integer"
                    },{
                        "name": "Hcratio",
                        "type": "integer"
                    },{
                        "name": "TrSet",
                        "type": "integer"
                    },{
                        "name": "Tr",
                        "type": "integer"
                    },{
                        "name": "Electricityproducerstarts",
                        "type": "integer"
                    },{
                        "name": "Electricityproducerhours",
                        "type": "integer"
                    },{
                        "name": "Electricityproduction",
                        "type": "integer"
                    },{
                        "name": "OpenThermversionmaster",
                        "type": "integer"
                    },{
                        "name": "CumulativElectricityProduction",
                        "type": "integer"
                    },
                    {
                        "name": "Masterversion",
                        "type": "integer"
                    }

                ],
                "commands": [],
                lwm2mResourceMapping: {
                        "Manufacturer" : {
                            "objectType": 3,
                            "objectInstance": 0,
                            "objectResource": 0
                        },
                        "ModelNumber" : {
                            "objectType": 3,
                            "objectInstance": 0,
                            "objectResource": 1
                        },
                        "SerialNumber" : {
                            "objectType": 3,
                            "objectInstance": 0,
                            "objectResource": 2
                        },
                        "FirmwareVersion" : {
                            "objectType": 3,
                            "objectInstance": 0,
                            "objectResource": 3
                        },
                        "AvailablePowerSources" : {
                            "objectType": 3,
                            "objectInstance": 0,
                            "objectResource": 6
                        },
                        "PowerSourceVoltage" : {
                            "objectType": 3,
                            "objectInstance": 0,
                            "objectResource": 7
                        },
                        "PowerSourceCurrent" : {
                            "objectType": 3,
                            "objectInstance": 0,
                            "objectResource": 8
                        },
                        "BatteryLevel" : {
                            "objectType": 3,
                            "objectInstance": 0,
                            "objectResource": 9
                        },
                        "MemoryFree" : {
                            "objectType": 3,
                            "objectInstance": 0,
                            "objectResource": 10
                        },
                        "ErrorCode" : {
                            "objectType": 3,
                            "objectInstance": 0,
                            "objectResource": 11
                        },"Current Time" : {
                            "objectType": 3,
                            "objectInstance": 0,
                            "objectResource": 13
                        },"UTCOffset" : {
                            "objectType": 3,
                            "objectInstance": 0,
                            "objectResource": 14
                        },"Timezone" : {
                            "objectType": 3,
                            "objectInstance": 0,
                            "objectResource": 15
                        },"SupportedBindingandModes" : {
                            "objectType": 3,
                            "objectInstance": 0,
                            "objectResource": 16
                        },
                        "Status" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 0
                        },
                        "TSet" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 1
                        },"MConfigMMemberIDCode" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 2
                        },"SConfigSMemberIDCode" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 3
                        },"RemoteRequest" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 4
                        },"ASFFlagsOEMfaultcode" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 5
                        },"RBPflags" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 6
                        },"OEMfaultcode" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 7
                        },"TsetCH2" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 8
                        },"TrOverride" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 9
                        },"MaxRelativeModulationLevelSetting" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 14
                        },"MaxCapacityMinmodlevel" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 15
                        },"TrSet" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 16
                        },"Relativemodlevel" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 17
                        },"CHPressure" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 18
                        },"DHWflowrate" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 19
                        },"Tr" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 24
                        },"TBoiler" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 25
                        },"Tdhw" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 26
                        },"TBoiler" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 25
                        },"TOutside" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 27
                        },"Tret" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 28
                        },"Tcollector" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 30
                        },"TFlowCH2" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 31
                        },"Tdhw2" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 32
                        },"TExhaust" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 33
                        },"TBoilerHeatExchanger" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 34
                        },"Boilerfanspeedsetpointactualvalue" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 35
                        },"FlameCurrent" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 36
                        },"RelativeHumidity" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 38
                        },"DHWSetpointupperlowerbounds" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 48
                        },"MaxCHwatersetpointupperlowerbounds" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 49
                        },"HcratioUBHcratioLB" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 50
                        },"DHWSetpoint" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 56
                        },"MaxCHwatersetpoint" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 57
                        },"Hcratio" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 58
                        },"Tsi" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 80
                        },"Tso" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 81
                        },"Tei" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 82
                        },"Teo" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 83
                        },"RPMexhaust" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 85
                        },"TOutside" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 27
                        },"OperatingMode" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 99
                        },"RemoteOverrideFunction" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 100
                        },"Electricityproducerstarts" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 109
                        },"Electricityproducerhours" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 110
                        },"Electricityproduction" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 111
                        },"CumulativElectricityProduction" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 27
                        },"Unsucessfulburnerstarts" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 113
                        },"FlameSignaltoolownumber" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 114
                        },"OEMDiagnosticCode" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 115
                        },"SucessfulBurnerStarts" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 116
                        },"CHPumpStarts" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 117
                        },"DHWpumpvalvestarts" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 118
                        },"DHWburnerstarts" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 119
                        },"BurnerOperationHours" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 120
                        },"CHpumpoperationHours" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 121
                        },"DHWpumpvalveoperationhours" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 122
                        },"DHWburneroperationhours" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 123
                        },"OpenThermversionmaster" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 124
                        },"OpenThermversionslave" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 125
                        },"Masterversion" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 126
                        },"Slaveversion" : {
                            "objectType": 6000,
                            "objectInstance": 0,
                            "objectResource": 127
                        }
                    }
	        }
    },
    service: 'smartGondor',
    subservice: '/gardens',
    providerUrl: 'http://MY_IP:4041',
    deviceRegistrationDuration: 'P1M'
};

module.exports = config;



Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant