lightweightm2m-iotagent
lightweightm2m-iotagent copied to clipboard
IoT Agent LWM2M Memory exhaust and production environment
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
Hi Secmotic,
Could you please paste your config.js file ?
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;